LOAD TABLE WHEN DATA DOES NOT
MATCH
FD DN-TAB-FILE-IN
.
.
.
01 DN-TAB-REC-IN.
05
DAY-IN PIC 9.
05
TYP-IN-ENTRY OCCURS 4 TIMES.
10
TYP-IN PIC XX.
10
QTY-IN-ENTRY OCCURS 3 TIMES.
15 QTY-IN PIC 99.
15 PR-IN PIC S9V99.
WORKING-STORAGE
SECTION.
01 DOUGHNUT-TABLE.
05
TYP-ENTRY OCCURS 4 TIMES.
10
TYP PIC XX.
10
DAY-ENTRY OCCURS 5 TIMES.
15 DAY PIC 9.
15 QTY-ENTRY OCCURS 3
TIMES.
20 QTY PIC 99.
20 PR PIC S9V99.
.
.
.
PROCEDURE
DIVISION.
MAINLINE.
.
.
.
PERFORM READ-TAB-FILE.
PERFORM LOAD-DN-TABLE
UNTIL TAB-FILE-AT-END
.
.
.
LOAD-DN-TABLE.
MOVE +0 TO SUB1.
PERFORM LOAD-TYPE 4 TIMES.
PERFORM READ-TAB-FILE.
LOAD-TYPE.
ADD +1 TO SUB1.
MOVE TYP-IN (SUB1) TO TYP (SUB1).
MOVE DAY-IN TO DAY (SUB1,DAY-IN).
MOVE +0 TO SUB2.
PERFORM LOAD-QTY 3 TIMES.
LOAD-QTY.
ADD +1 TO SUB2.
MOVE QTY-IN (SUB1,SUB2) TO QTY
(SUB1,DAY-IN,SUB2).
MOVE PR-IN (SUB1,SUB2) TO PR (SUB1,DAY-IN,SUB2).
LOAD TABLE WHEN DATA MATCHES BUT INDIVIDUAL
MOVES NEEDED
FD DN-TAB-FILE-IN
.
.
.
01 DN-TAB-REC-IN.
05
TYP-IN PIC XX.
05
DAY-IN-ENTRY OCCURS 5 TIMES.
10
QTY-IN-ENTRY OCCURS 3 TIMES.
15 PR-IN PIC S9V99.
WORKING-STORAGE
SECTION.
01 DOUGHNUT-TABLE.
05
TYP-ENTRY OCCURS 4 TIMES.
10
DAY-ENTRY OCCURS 5 TIMES.
15 QTY-ENTRY OCCURS 3
TIMES.
20 PR PIC S9V99.
.
.
.
PROCEDURE
DIVISION.
MAINLINE.
.
.
.
PERFORM READ-TAB-FILE.
PERFORM LOAD-DN-TABLE
UNTIL TAB-FILE-AT-END
.
.
.
LOAD-DN-TABLE.
MOVE +0 TO SUB1.
PERFORM LOAD-DAY 5 TIMES.
PERFORM READ-TAB-FILE.
LOAD-DAY.
ADD +1 TO SUB1.
MOVE +0 TO SUB2.
PERFORM LOAD-QTY 3 TIMES.
LOAD-QTY.
ADD +1 TO SUB2.
MOVE PR-IN (SUB1,SUB2) TO PR
(TYP-IN,SUB1,SUB2).
TWO WAYS OF ZEROING TABLE OF
ACCUMULATORS
WORKING-STORAGE
SECTION.
01 SUM-TABLE.
05
STATE-ENTRY OCCURS 50 TIMES.
10
BRANCH-ENTRY OCCURS 99
TIMES.
15 BRANCH-ACCUM PIC
S9(5)V99.
.
.
.
PROCEDURE
DIVISION.
MAINLINE.
.
.
.
MOVE +0 TO SUB1.
PERFORM STATE-LEVEL 50 TIMES.
.
.
.
STATE-LEVEL.
ADD +1 TO SUB1.
MOVE +0 TO SUB2.
PERFORM ZERO-BRANCH 99 TIMES.
ZERO-BRANCH.
ADD +1 TO SUB2.
MOVE +0 TO BRANCH-ACCUM (SUB1,SUB2).
---------------
PROCEDURE
DIVISION.
MAINLINE.
.
.
.
PERFORM
ZERO-BRANCH
VARYING SUB1 FROM 1
BY 1
UNTIL SUB1 > 50
AFTER SUB2 FROM 1
BY 1
UNTIL SUB2 > 99.
.
.
.
ZERO-BRANCH.
MOVE +0 TO BRANCH-ACCUM (SUB1,SUB2).
PRINTING OF TABLE OF
ACCUMULATORS
WORKING-STORAGE
SECTION.
01 SUM-TABLE.
05
STATE-ENTRY OCCURS 50 TIMES.
10
BRANCH-ENTRY OCCURS 99
TIMES.
15 BRANCH-ACCUM PIC S9(5)V99.
01 STATE-BRANCH-TABLE.
05
ST-NAME-ENTRY OCCURS 20 TIMES.
10
TAB-ST PIC 99.
10
ST-NAME PIC X(20).
10
BR-NAME-ENTRY OCCURS 10 TIMES.
15 TAB-BR PIC 99.
15 BR-NAME PIC X(20).
.
.
.
PROCEDURE
DIVISION.
MAINLINE.
.
.
.
PERFORM PROCESS-RECORD UNTIL EOF.
.
.
.
MOVE +0 TO SUB1.
PERFORM PRINT-STATE 20 TIMES.
.
.
.
PRINT-STATE.
ADD +1 TO SUB1.
MOVE +0 TO SUB2.
MOVE TAB-ST (SUB1) TO ST-SUB.
PERFORM PRINT-BRANCH 10 TIMES.
MOVE ST-SUB TO PRT-ST.
MOVE STATE-ACCUM TO PRT-AMT.
WRITE PRINT-LINE AFTER LINE-SPACING.
MOVE +0 TO STATE-ACCUM.
PRINT-BRANCH.
ADD +1 TO SUB2.
MOVE TAB-BR (SUB1,SUB2) TO BR-SUB.
MOVE ST-SUB TO PRT-ST.
MOVE BR-SUB TO PRT-BR.
MOVE BRANCH-ACCUM (ST-SUB,BR-SUB) TO
PRT-AMT.
WRITE PRINT-LINE AFTER LINE-SPACING.
ADD BRANCH-ACCUM (ST-SUB,BR-SUB) TO
STATE-ACCUM.