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.