The issue I am getting is that line COLUMNS that i define in the working storage
section and when it is used within the 200-BANKER-FILL section is giving me a
syntax error in which COLUMNS is unexpected. the actual error is
'error: syntax error, unexpected COLUMNS'
I cannot seem to understand how the declaration of COLUMNS within the working storage section would be considered unexpected, any help would be great
IDENTIFICATION DIVISION.
PROGRAM-ID.BankerAlgoritm.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT BANKER-FILE-IN ASSIGN TO 's1.txt'
ORGANIZATION IS LINE SEQUENTIAL.
*> FUNCTION NUMVAL (STRING)
DATA DIVISION.
FILE SECTION.
FD BANKER-FILE-IN.
01 BANKER-LINE PIC X(9).
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'.
88 NO-MORE-RECORDS VALUE 'NO '.
01 ROWS PIC 9.
01 COLUMNS PIC 9.
01 BANKER-TABLE-ASSIGN.
05 ASSIGN-ROW OCCURS 5 TIMES INDEXED BY X.
10 ASSIGN-COLUMN OCCURS 4 TIMES INDEXED BY Y.
20 ASSIGN-RESOURCE PIC 9.
01 BANKER-TABLE-MAX.
05 MAX-ROW OCCURS 5 TIMES INDEXED BY X.
10 MAX-COLUMN OCCURS 4 TIMES INDEXED BY Y.
20 MAX-RESOURCE PIC 9.
01 BANKER-TABLE-AVAL.
05 AVAL-COLUMN OCCURS 4 TIMES INDEXED BY Y.
10 AVAL-RESOURCE PIC 9.
01 BANKER-TABLE-REQUEST.
05 REQUEST-COLUMN OCCURS 4 TIMES INDEXED BY Y.
10 REQUEST-RESOURCE PIC 9.
01 BANKER-REQUEST-LINE.
05 REQUEST-LINE PIC 9.
05 SPACER PIC X.
05 REQUEST-ONE PIC 9.
05 PIC X.
05 REQUEST-TWO PIC 9.
05 PIC X.
05 REQUEST-THREE PIC 9.
05 PIC X.
05 REQUEST-FOUR PIC 9.
01 MATRIX.
05 ONE PIC 9.
05 PIC X.
05 TWO PIC 9.
05 PIC X.
05 THREE PIC 9.
05 PIC X.
05 FOUR PIC 9.
01 HOLDING-VAL-SINGLE PIC 9.
01 LINE-COUNT PIC 99 VALUE 0.
01 SAFE-STATE PIC XXXXX VALUE 'FALSE'.
PROCEDURE DIVISION.
*>****************************************
*> Controls direction of program logic *
*> and reads the first record. *
*>****************************************
100-MAIN-MODULE.
PERFORM UNTIL NO-MORE-RECORDS
READ BANKER-FILE-IN
AT END
MOVE 'NO ' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 200-BANKER-FILL
END-READ
END-PERFORM
*> PERFORM 300-FILL-NEED
*> PERFORM 400-SAFE-STATE
*>IF SAFE-STATE = 'TRUE'
*> PERFORM 500-REQUEST
*> PERFORM 600-END-OF-JOB-RTN
STOP RUN.
200-BANKER-FILL.
ADD 1 TO LINE-COUNT
IF LINE-COUNT IS EQUAL TO 1
MOVE BANKER-LINE TO ROWS
END-IF
IF LINE-COUNT IS EQUAL TO 3
MOVE BANKER-LINE TO COLUMNS
END-IF
IF LINE-COUNT >= 5 AND <= 10
*>FILL ASSIGNED MATRIX
MOVE BANKER-LINE TO MATRIX
MOVE ONE TO ASSIGN-COLUMN(LINE-COUNT - 4, 1)
MOVE TWO TO ASSIGN-COLUMN(LINE-COUNT - 4, 2)
MOVE THREE TO ASSIGN-COLUMN(LINE-COUNT - 4, 3)
MOVE FOUR TO ASSIGN-COLUMN(LINE-COUNT - 4, 4)
END-IF
IF LINE-COUNT >= 12 AND <= 17
*>FILL IN MAX MATRIX
MOVE BANKER-LINE TO MATRIX
MOVE ONE TO MAX-COLUMN(LINE-COUNT - 11, 1)
MOVE TWO TO MAX-COLUMN(LINE-COUNT - 11, 2)
MOVE THREE TO MAX-COLUMN(LINE-COUNT - 11, 3)
MOVE FOUR TO MAX-COLUMN(LINE-COUNT - 11, 4)
END-IF
IF LINE-COUNT = 19
*> FILL IN AVAILIBLE MATRIX
MOVE BANKER-LINE TO MATRIX
MOVE ONE TO AVAL-COLUMN(1)
MOVE TWO TO AVAL-COLUMN(2)
MOVE THREE TO AVAL-COLUMN(3)
MOVE FOUR TO AVAL-COLUMN(4)
END-IF
IF LINE-COUNT = 21
*> FILL IN REQUEST
MOVE BANKER-LINE TO BANKER-REQUEST-LINE
END-IF.
*>*************************************************
*> Performed from 100-MAIN-MODULE. Closes files *
*>*************************************************
600-END-OF-JOB-RTN.
CLOSE BANKER-FILE-IN.
the next part is the input file
5
4
0 0 1 2
1 0 0 0
1 3 5 4
0 6 3 2
0 0 1 4
0 0 1 2
1 7 5 0
2 3 5 6
0 6 5 2
0 6 5 6
1 5 2 0
1:0 4 2 0
COLUMN is a reserved word in COBOL. Here is a list of reserved words for future reference.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With