I read on LinkedIn recently about the continued use of COBOL and decided to write my own program at home. Misty Decker, who is Product Marketing Director at Micro Focus, gave me access to a compiler so then I just had to decide what my program would do.
I wrote a program in the 1980's to do exponentiation to fractional powers as ICL Range COBOL at that time could only calculate square roots. I found the program on some pyjama paper in the loft (it was the only one I bothered to save) and started to retype it. Then I decided that there would be no interest in it nowadays as modern-day COBOL is able to do exponentiation to fractional powers by itself.
I wrote a C program to create solutions for a hidoku puzzle recently but never got round to finishing it so that it could create the puzzle too. I decided to rewrite it, with a view to finishing its development in COBOL.
You can see it running below:
* hidoku.cbl
* Options: list"hidoku.lis"
1 IDENTIFICATION DIVISION.
2*
3 PROGRAM-ID. HIDOKU.
4*
5* (KING'S TOUR PUZZLE.)
6*
7 AUTHOR. ANDREW S REID.
8*
9 DATE-WRITTEN. MAY 2021.
10*
11******************************************************************
12* VERSION * DATE * COMMENTS *
13******************************************************************
14* 1 * MAY 2021 * ORIGINAL VERSION CREATED FROM EARLIER C *
15* PROGRAM. *
16* THIS ONLY CREATES A SOLUTION. *
17******************************************************************
18*
19 ENVIRONMENT DIVISION.
20*
21 CONFIGURATION SECTION.
22*
23 SOURCE-COMPUTER. BUILT-AT-HOME.
24*
25 OBJECT-COMPUTER. BUILT-AT-HOME.
26*
27 INPUT-OUTPUT SECTION.
28*
29 FILE-CONTROL.
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 2
* hidoku.cbl
30/
31 DATA DIVISION.
32*
33 FILE SECTION.
34*
35 WORKING-STORAGE SECTION.
36*
37 01 INPUT-PARAMETERS.
38 05 RANDOM-NUMBER-SEED PIC 9999.
39 05 COMMA1 PIC X.
40 05 SIZE1-INPUT PIC 99.
41 05 COMMA2 PIC X.
42 05 START-COLUMN-INPUT PIC 99.
43 05 COMMA3 PIC X.
44 05 START-ROW-INPUT PIC 99.
45 05 COMMA4 PIC X.
46 05 END-COLUMN-INPUT PIC 99.
47 05 COMMA5 PIC X.
48 05 END-ROW-INPUT PIC 99.
49*
50* THE RANDOM-MOVES ARRAY IS USED DURING SOLUTION CREATION.
51* IT DETERMINES WHICH ORDER MOVES ARE SELECTED AT EACH LEVEL.
52*
53 01 FILLER1.
54 05 FILLER2 OCCURS 144.
55 10 RANDOM-MOVES PIC 9(6) OCCURS 8.
56*
57* THE BOARD ARRAY STORES THE KING'S PROGRESS AROUND THE BOARD.
58*
59 01 FILLER3.
60 05 FILLER4 OCCURS 12.
61 10 BOARD PIC 9(3) OCCURS 12.
62*
63* POSITION1 WAS CALLED POSITION IN ORIGINAL C PROGRAM BUT THIS
64* IS A RESERVED WORD IN COBOL:
65*
66 01 FILLER5.
67 05 FILLER6 OCCURS 144.
68 10 POSITION1 PIC 9(6) OCCURS 3.
69*
70* ARRAY TO CHECK THAT THERE IS ONLY 1 CONTIGUOUS SET OF EMPTY
71* SQUARES:
72*
73 01 FILLER7.
74 05 FILLER8 OCCURS 12.
75 10 CONNECTIVITY-CHECK PIC 9(6) OCCURS 12.
76*
77 77 A PIC 9(6).
78 77 ACCESSIBILITY PIC 9(6).
79 77 B PIC 9(6).
80 77 CONTIGUOUS-SQUARES-FOUND PIC 9(6).
81 77 DUMMY1 PIC X.
82 77 END-COLUMN PIC 9(6).
83 77 END-ROW PIC 9(6).
84 77 FINISHED PIC 9(6).
85 77 I PIC 9(6).
86 77 INACCESSIBLE-SQUARES PIC 9(6).
87 77 INVALID-PARAMETER-SWITCH PIC X.
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 3
* hidoku.cbl
88 77 J PIC 9(6).
89 77 K PIC 9(6).
90 77 L PIC 9(6).
91 77 LEVEL PIC 9(6).
92 77 M PIC 9(6).
93 77 MOVE-FOUND PIC 9(6).
94 77 NON-CONTIGUOUS-SQUARES-FOUND PIC 9(6).
95 77 P PIC 9(6).
96 77 Q PIC 9(6).
97 77 RANDOM-NUMBER1 PIC 9(6)V9(6) COMP.
98 77 RANDOM-NUMBER2 PIC 9(6)V9(6) COMP.
99 77 RANDOM-NUMBER3 PIC 9(6).
100*
101* SIZE OF BOARD (3 TO 12) I.E. LENGTH OF 1 SIDE.
102*
103* SIZE1 WAS CALLED SIZE IN ORIGINAL C PROGRAM BUT THIS IS A
104* RESERVED WORD IN COBOL;
105*
106 77 SIZE1 PIC 9(6).
107*
108* SIZE-X-SIZE HOLDS THE NUMBER OF SQUARES IN THE PUZZLE.
109*
110 77 SIZE-X-SIZE PIC 9(6).
111 77 START-COLUMN PIC 9(6).
112 77 START-ROW PIC 9(6).
113 77 X PIC 9(6).
114 77 Y PIC 9(6).
115
116 PROCEDURE DIVISION.
117*
118 MAIN.
119*
120 MOVE ZERO TO INVALID-PARAMETER-SWITCH.
121 ACCEPT INPUT-PARAMETERS.
122 DISPLAY "INPUT PARAMETERS: " INPUT-PARAMETERS.
123*
124 IF RANDOM-NUMBER-SEED IS NUMERIC
125 PERFORM GET-RANDOM-NUMBER RANDOM-NUMBER-SEED TIMES
126 ELSE
127 DISPLAY "RANDOM NUMBER SEED NOT NUMERIC"
128 MOVE "1" TO INVALID-PARAMETER-SWITCH.
129*
130 IF SIZE1-INPUT IS NOT NUMERIC
131 DISPLAY "SIDE LENGTH MUST BE NUMERIC"
132 MOVE "1" TO INVALID-PARAMETER-SWITCH.
133 IF SIZE1-INPUT < 3 OR SIZE1-INPUT > 12
134 DISPLAY "SIDE LENGTH MUST BE BETWEEN 3 AND 12"
135 MOVE "1" TO INVALID-PARAMETER-SWITCH.
136 MOVE SIZE1-INPUT TO SIZE1.
137 MULTIPLY SIZE1 BY SIZE1 GIVING SIZE-X-SIZE.
138*
139 IF START-COLUMN-INPUT IS NOT NUMERIC
140 DISPLAY "START COLUMN MUST BE NUMERIC"
141 MOVE "1" TO INVALID-PARAMETER-SWITCH.
142 IF START-COLUMN-INPUT < 1 OR START-COLUMN-INPUT > SIZE1
143 DISPLAY "START COLUMN MUST BE BETWEEN 1 AND " SIZE1
144 MOVE "1" TO INVALID-PARAMETER-SWITCH.
145 MOVE START-COLUMN-INPUT TO START-COLUMN.
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 4
* hidoku.cbl
146*
147 IF START-ROW-INPUT IS NOT NUMERIC
148 DISPLAY "START ROW MUST BE NUMERIC"
149 MOVE "1" TO INVALID-PARAMETER-SWITCH.
150 IF START-ROW-INPUT < 1 OR START-ROW-INPUT > SIZE1
151 DISPLAY "START ROW MUST BE BETWEEN 1 AND " SIZE1
152 MOVE "1" TO INVALID-PARAMETER-SWITCH.
153 MOVE START-ROW-INPUT TO START-ROW.
154*
155 IF END-COLUMN-INPUT IS NOT NUMERIC
156 DISPLAY "END COLUMN MUST BE NUMERIC"
157 MOVE "1" TO INVALID-PARAMETER-SWITCH.
158 IF END-COLUMN-INPUT < 1 OR END-COLUMN-INPUT > SIZE1
159 DISPLAY "END COLUMN MUST BE BETWEEN 1 AND " SIZE1
160 MOVE "1" TO INVALID-PARAMETER-SWITCH.
161 MOVE END-COLUMN-INPUT TO END-COLUMN.
162*
163 IF END-ROW-INPUT IS NOT NUMERIC
164 DISPLAY "END ROW MUST BE NUMERIC"
165 MOVE "1" TO INVALID-PARAMETER-SWITCH.
166 IF END-ROW-INPUT < 1 OR END-ROW-INPUT > SIZE1
167 DISPLAY "END ROW MUST BE BETWEEN 1 AND " SIZE1
168 MOVE "1" TO INVALID-PARAMETER-SWITCH.
169 MOVE END-ROW-INPUT TO END-ROW.
170*
171 IF START-COLUMN = END-COLUMN
172 AND START-ROW = END-ROW
173 DISPLAY "START SQUARE MUST NOT EQUAL END SQUARE"
174 MOVE "1" TO INVALID-PARAMETER-SWITCH.
175*
176 IF INVALID-PARAMETER-SWITCH = ZERO
177 DISPLAY "PARAMETERS OK"
178 DISPLAY "CALCULATING SOLUTION, PLEASE WAIT"
179 ELSE
180 DISPLAY "ABOUT TO FINISH"
181 ACCEPT DUMMY1
182 STOP RUN.
183*
184 MOVE ZEROES TO FILLER1, FILLER3, FILLER5.
185 PERFORM DECIDE-MOVE-ORDER1
186 VARYING A FROM 1 BY 1 UNTIL A > SIZE-X-SIZE.
187 MOVE START-COLUMN TO POSITION1 (1,1).
188 MOVE START-ROW TO POSITION1 (1,2).
189 MOVE 1 TO BOARD (START-COLUMN,START-ROW).
190 MOVE 1 TO LEVEL.
191*
192* CONTINUE PROCESSING UNTIL EITHER:
193* (1) ALL COMBINATIONS HAVE BEEN TESTED BUT NO SOLUTION HAS
194* BEEN FOUND AND THE PROGRAM TRIES TO MOVE THE KING FROM
195* ITS ORIGINAL POSITION.
196* OR
197* (2) A SOLUTION IS FOUND.
198*
199 PERFORM FIND-NEXT-MOVE UNTIL
200 LEVEL < 1 OR
201 LEVEL NOT < SIZE-X-SIZE.
202 IF LEVEL = ZERO DISPLAY "NO SOLUTION FOUND".
203 IF LEVEL = SIZE-X-SIZE
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 5
* hidoku.cbl
204 DISPLAY "HERE IS A SOLUTION"
205 PERFORM DISPLAY-BOARD.
206 DISPLAY "ABOUT TO FINISH".
207 ACCEPT DUMMY1.
208 STOP RUN.
209*
210 GET-RANDOM-NUMBER.
211*
212 COMPUTE RANDOM-NUMBER1 = FUNCTION RANDOM().
213*
214 DECIDE-MOVE-ORDER1.
215*
216 PERFORM DECIDE-MOVE-ORDER2
217 VARYING B FROM 1 BY 1 UNTIL B > 8.
218*
219 DECIDE-MOVE-ORDER2.
220*
221 MOVE 0 TO FINISHED.
222 PERFORM DECIDE-MOVE-ORDER3 UNTIL FINISHED = 1.
223*
224 DECIDE-MOVE-ORDER3.
225 COMPUTE RANDOM-NUMBER1 = FUNCTION RANDOM().
226 COMPUTE RANDOM-NUMBER2 = RANDOM-NUMBER1 * 8 + 1.
227 MOVE RANDOM-NUMBER2 TO RANDOM-NUMBER3.
228 IF RANDOM-MOVES (A,RANDOM-NUMBER3) = 0
229 MOVE B TO RANDOM-MOVES (A,RANDOM-NUMBER3)
230 MOVE 1 TO FINISHED.
231*
232 FIND-NEXT-MOVE.
233*
234* LOOK FOR NEXT AVAILABLE MOVE FROM CURRENT POSITION:
235*
236D PERFORM DISPLAY-BOARD.
237 MOVE ZERO TO MOVE-FOUND.
238 PERFORM TRY-MOVES THROUGH TRY-MOVES-X UNTIL
239 POSITION1 (LEVEL,3) NOT LESS THAN 8 OR
240 MOVE-FOUND = 1.
241 IF MOVE-FOUND = ZERO
242 MOVE POSITION1 (LEVEL,1) TO X
243 MOVE POSITION1 (LEVEL,2) TO Y
244 MOVE ZERO TO BOARD (X,Y)
245 MOVE ZERO TO POSITION1 (LEVEL,1),
246 POSITION1 (LEVEL,2),
247 POSITION1 (LEVEL,3)
248 SUBTRACT 1 FROM LEVEL
249 ELSE
250 ADD 1 TO LEVEL
251 MOVE X TO POSITION1 (LEVEL,1)
252 MOVE Y TO POSITION1 (LEVEL,2)
253 MOVE LEVEL TO BOARD (X,Y).
254*
255 TRY-MOVES.
256*
257 ADD 1 TO POSITION1 (LEVEL,3).
258 MOVE POSITION1 (LEVEL,1) TO X.
259 MOVE POSITION1 (LEVEL,2) TO Y.
260 MOVE POSITION1 (LEVEL,3) TO P.
261 MOVE RANDOM-MOVES (LEVEL,P) TO Q.
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 6
* hidoku.cbl
262 IF Q = 1 ADD 1 TO Y.
263 IF Q = 2 ADD 1 TO X ADD 1 TO Y.
264 IF Q = 3 ADD 1 TO X.
265 IF Q = 4 ADD 1 TO X SUBTRACT 1 FROM Y.
266 IF Q = 5 SUBTRACT 1 FROM Y.
267 IF Q = 6 SUBTRACT 1 FROM X SUBTRACT 1 FROM Y.
268 IF Q = 7 SUBTRACT 1 FROM X.
269 IF Q = 8 SUBTRACT 1 FROM X ADD 1 TO Y.
270 IF X < 1 OR X > SIZE1 OR Y < 1 OR Y > SIZE1
271 GO TO TRY-MOVES-X.
272 IF BOARD (X,Y) NOT EQUAL ZERO
273 GO TO TRY-MOVES-X.
274*
275* IT IS ONLY POSSIBLE TO GO TO THE FINAL SQUARE ONCE ALL OTHER
276* SQUARES HAVE BEEN VISITED:
277*
278 IF X = END-COLUMN AND Y = END-ROW AND
279 LEVEL NOT EQUAL SIZE-X-SIZE - 1
280 GO TO TRY-MOVES-X.
281*
282* CHECK THAT ALL THE UNOCCUPIED SQUARES ARE CONTIGUOUS.
283* START BY ASSUMING THAT THEY ARE NOT:
284*
285 MOVE ZEROES TO FILLER7.
286*
287* FIND THE 1ST UNOCCUPIED SQUARE:
288*
289 PERFORM FIND-UNOCCUPIED-SQUARE
290 VARYING A FROM 1 BY 1 UNTIL A > SIZE1
291 AFTER B FROM 1 BY 1 UNTIL B > SIZE1.
292*
293* NOW FIND ALL THE EMPTY SQUARES WHICH ARE CONTIGUOUS WITH THIS
294* ONE:
295*
296 MOVE 1 TO CONTIGUOUS-SQUARES-FOUND.
297 PERFORM FIND-CONTIGUOUS-SQUARES1
298 UNTIL CONTIGUOUS-SQUARES-FOUND = ZERO.
299*
300* THE CONNECTIVITY-CHECK ARRAY SHOULD NOW HAVE A LIST OF ALL
301* THE EMPTY SQUARES WHICH ARE CONTIGUOUS WITH THE FIRST.
302*
303* NOW SCAN THE BOARD FOR EMPTY SQUARES WHICH ARE NOT CONTIGUOUS
304* WITH THIS LIST:
305*
306 MOVE ZERO TO NON-CONTIGUOUS-SQUARES-FOUND.
307 PERFORM FIND-NON-CONTIGUOUS-UNUSED
308 VARYING A FROM 1 BY 1 UNTIL A > SIZE1
309 AFTER B FROM 1 BY 1 UNTIL B > SIZE1.
310 IF NON-CONTIGUOUS-SQUARES-FOUND = 1
311 GO TO TRY-MOVES-X.
312*
313* NOW SCAN THE BOARD AGAIN FOR INACCESSIBLE SQUARES I.E. THOSE
314* WHICH DO NOT HAVE A WAY IN AND OUT:
315*
316 MOVE 0 TO INACCESSIBLE-SQUARES.
317 PERFORM FIND-INACCESSIBLE-SQUARES1
318 THROUGH FIND-INACCESSIBLE-SQUARES1-X
319 VARYING I FROM 1 BY 1 UNTIL I > SIZE1
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 7
* hidoku.cbl
320 AFTER J FROM 1 BY 1 UNTIL J > SIZE1.
321 IF INACCESSIBLE-SQUARES = 1
322 GO TO TRY-MOVES-X.
323 MOVE 1 TO MOVE-FOUND.
324*
325 TRY-MOVES-X.
326*
327 EXIT.
328*
329 FIND-UNOCCUPIED-SQUARE.
330*
331 IF BOARD (A,B) = ZERO
332 MOVE A TO I
333 MOVE B TO J
334* RECORD THIS SQUARE IN THE TABLE WHICH WILL CHECK IF ALL THE
335* EMPTY SQUARES ARE CONTIGUOUS:
336 MOVE 1 TO CONNECTIVITY-CHECK (I,J)
337* JUMP OUT OF THE LOOP:
338 MOVE 9 TO A,B.
339*
340 FIND-CONTIGUOUS-SQUARES1.
341*
342 MOVE ZERO TO CONTIGUOUS-SQUARES-FOUND.
343 PERFORM FIND-CONTIGUOUS-SQUARES2
344 VARYING A FROM 1 BY 1 UNTIL A > 8
345 AFTER B FROM 1 BY 1 UNTIL B > 8.
346*
347 FIND-CONTIGUOUS-SQUARES2.
348*
349 IF CONNECTIVITY-CHECK (A,B) = 1
350 PERFORM FIND-CONTIGUOUS-SQUARES3
351 VARYING K FROM 1 BY 1 UNTIL K > 8.
352*
353 FIND-CONTIGUOUS-SQUARES3.
354*
355 IF K = 1
356 MOVE A TO I
357 ADD 1 TO B GIVING J ELSE
358 IF K = 2
359 ADD 1 TO A GIVING I
360 ADD 1 TO B GIVING J ELSE
361 IF K = 3
362 ADD 1 TO A GIVING I
363 MOVE B TO J ELSE
364 IF K = 4
365 ADD 1 TO A GIVING I
366 SUBTRACT 1 FROM B GIVING J ELSE
367 IF K = 5
368 MOVE A TO I
369 SUBTRACT 1 FROM B GIVING J ELSE
370 IF K = 6
371 SUBTRACT 1 FROM A GIVING I
372 SUBTRACT 1 FROM B GIVING J ELSE
373 IF K = 7
374 SUBTRACT 1 FROM A GIVING I
375 MOVE B TO J ELSE
376 IF K = 8
377 SUBTRACT 1 FROM A GIVING I
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 8
* hidoku.cbl
378 ADD 1 TO B GIVING J.
379 IF I NOT LESS THAN 1
380 AND I NOT > SIZE1
381 AND J NOT LESS THAN 1
382 AND J NOT > SIZE1
383 AND BOARD (I,J) = ZERO
384 AND CONNECTIVITY-CHECK (I,J) = ZERO
385 MOVE 1 TO CONNECTIVITY-CHECK (I,J),
386 CONTIGUOUS-SQUARES-FOUND.
387*
388 FIND-NON-CONTIGUOUS-UNUSED.
389*
390 IF BOARD (A,B) = ZERO AND CONNECTIVITY-CHECK (A,B) NOT = 1
391 MOVE 1 TO NON-CONTIGUOUS-SQUARES-FOUND.
392*
393 FIND-INACCESSIBLE-SQUARES1.
394*
395 IF BOARD (I,J) NOT = 0
396 GO TO FIND-INACCESSIBLE-SQUARES1-X.
397 IF I = X AND J = Y
398 GO TO FIND-INACCESSIBLE-SQUARES1-X.
399 IF I = END-COLUMN AND J = END-ROW
400 GO TO FIND-INACCESSIBLE-SQUARES1-X.
401 MOVE ZERO TO ACCESSIBILITY.
402 PERFORM FIND-INACCESSIBLE-SQUARES2
403 THROUGH FIND-INACCESSIBLE-SQUARES2-X
404 VARYING K FROM 1 BY 1 UNTIL K > 8.
405 IF ACCESSIBILITY < 2
406 MOVE 1 TO INACCESSIBLE-SQUARES.
407*
408 FIND-INACCESSIBLE-SQUARES1-X.
409*
410 EXIT.
411*
412 FIND-INACCESSIBLE-SQUARES2.
413*
414 IF K = 1
415 MOVE I TO L
416 ADD 1 TO J GIVING M ELSE
417 IF K = 2
418 ADD 1 TO I GIVING L
419 ADD 1 TO J GIVING M ELSE
420 IF K = 3
421 ADD 1 TO I GIVING L
422 MOVE J TO M ELSE
423 IF K = 4
424 ADD 1 TO I GIVING L
425 SUBTRACT 1 FROM J GIVING M ELSE
426 IF K = 5
427 MOVE I TO L
428 SUBTRACT 1 FROM J GIVING M ELSE
429 IF K = 6
430 SUBTRACT 1 FROM I GIVING L
431 SUBTRACT 1 FROM J GIVING M ELSE
432 IF K = 7
433 SUBTRACT 1 FROM I GIVING L
434 MOVE J TO M ELSE
435 IF K = 8
* Micro Focus COBOL V6.0 revision 000 02-Jul-21 21:27 Page 9
* hidoku.cbl
436 SUBTRACT 1 FROM I GIVING L
437 ADD 1 TO J GIVING M.
438 IF L < 1 OR L > SIZE1 OR M < 1 OR M > SIZE1
439 GO TO FIND-INACCESSIBLE-SQUARES2-X.
440 IF BOARD (L,M) = 0
441 ADD 1 TO ACCESSIBILITY.
442*
443 FIND-INACCESSIBLE-SQUARES2-X.
444*
445 EXIT.
446*
447 DISPLAY-BOARD.
448*
449 DISPLAY BOARD (8,1) " " BOARD (8,2) " "
450 BOARD (8,3) " " BOARD (8,4) " "
451 BOARD (8,5) " " BOARD (8,6) " "
452 BOARD (8,7) " " BOARD (8,8).
453 DISPLAY BOARD (7,1) " " BOARD (7,2) " "
454 BOARD (7,3) " " BOARD (7,4) " "
455 BOARD (7,5) " " BOARD (7,6) " "
456 BOARD (7,7) " " BOARD (7,8).
457 DISPLAY BOARD (6,1) " " BOARD (6,2) " "
458 BOARD (6,3) " " BOARD (6,4) " "
459 BOARD (6,5) " " BOARD (6,6) " "
460 BOARD (6,7) " " BOARD (6,8).
461 DISPLAY BOARD (5,1) " " BOARD (5,2) " "
462 BOARD (5,3) " " BOARD (5,4) " "
463 BOARD (5,5) " " BOARD (5,6) " "
464 BOARD (5,7) " " BOARD (5,8).
465 DISPLAY BOARD (4,1) " " BOARD (4,2) " "
466 BOARD (4,3) " " BOARD (4,4) " "
467 BOARD (4,5) " " BOARD (4,6) " "
468 BOARD (4,7) " " BOARD (4,8).
469 DISPLAY BOARD (3,1) " " BOARD (3,2) " "
470 BOARD (3,3) " " BOARD (3,4) " "
471 BOARD (3,5) " " BOARD (3,6) " "
472 BOARD (3,7) " " BOARD (3,8).
473 DISPLAY BOARD (2,1) " " BOARD (2,2) " "
474 BOARD (2,3) " " BOARD (2,4) " "
475 BOARD (2,5) " " BOARD (2,6) " "
476 BOARD (2,7) " " BOARD (2,8).
477 DISPLAY BOARD (1,1) " " BOARD (1,2) " "
478 BOARD (1,3) " " BOARD (1,4) " "
479 BOARD (1,5) " " BOARD (1,6) " "
480 BOARD (1,7) " " BOARD (1,8).
481 DISPLAY " ".
* Micro Focus COBOL V6.0 revision 000 Compiler
* (C) Copyright 1984-2020 Micro Focus or one of its affiliates.
* REF GNL-069600000AL
* Total Messages: 0
* Data: 11424 Code: 5503