IDENTIFICATION DIVISION.
       PROGRAM-ID. INVFILLB.
       AUTHOR. GROCER.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT DATA-FILE
               ASSIGN TO "C:\PCOBWIN\TABLES\INVFILL.DAT".
           SELECT PRINT-FILE
      *        ASSIGN TO PRINTER.
               ASSIGN TO "A:\INVOUT.DAT".
       DATA DIVISION.
       FILE SECTION.
       FD  DATA-FILE
           DATA RECORDS ARE REGULAR-INPUT.
       01  REGULAR-INPUT.
           05  CUST-NUM-IN       PIC 9(4).
           05  ITEM-NUM-IN       PIC 9(3).
           05  NUM-ORD-IN        PIC 9(5).
       FD  PRINT-FILE
           DATA RECORD IS PRINTZ.
       01  PRINTZ.
           05  FILLER            PIC X.
           05  CUST-NUM-PR       PIC 9(4).
           05  FILLER            PIC X(5).
           05  ITEM-NUM-PR       PIC 9(3).
           05  FILLER            PIC X(5).
           05  PRICE-PR          PIC $ZZ.99.
           05  FILLER            PIC X(5).
           05  NUM-ORD-PR        PIC ZZ,ZZ9.
           05  FILLER            PIC X(5).
           05  AMT-DUE-PR        PIC $Z,ZZZ,ZZZ.99.
           05  MSG-AREA-PR REDEFINES AMT-DUE-PR  PIC X(13).
           05  FILLER            PIC X(27).
       WORKING-STORAGE SECTION.
       01  TABLE-INPUT.
           05  ITEM-NUM-TI       PIC 9(3).
           05  PRICE-TI          PIC 99V99.
           05  FILLER            PIC X(5).
       01  INDICATORZ.
           05  MORE-RECS         PIC XXX       VALUE "YES".
           05  MATCH-IND         PIC XXX       VALUE "NO ".
       01  WORK-AREAS.
           05  AMT-DUE-WS        PIC 9(7)V99   VALUE 0.
       01  CONSTANTZ.
           05  ERR-MSG-CONST     PIC X(13)
                                 VALUE 'ITEM# INVALID'.
       01  SUBSCRIPTZ.
           05  SUB-IN            PIC 9       VALUE 1.
           05  SUBZ              PIC 9       VALUE 0.
       01  ITEM-TABLE.
           05  ENTRIES OCCURS 6 TIMES.
               10  ITEM-NUM-T    PIC 9(3).
               10  PRICE-T       PIC 99V99.
       PROCEDURE DIVISION.
       A-100-MAINLINE.
           PERFORM A-100-START.
           PERFORM B-100-PROCESS.
           PERFORM C-100-WRAPUP.
           STOP RUN.
       A-100-START.
           OPEN INPUT DATA-FILE
                OUTPUT PRINT-FILE.
           MOVE 1 TO SUB-IN.
           PERFORM U-100-FILL-TABLE
               6 TIMES.
      *        UNTIL SUB-IN > 6.
       B-100-PROCESS.
           READ DATA-FILE
               AT END
                  MOVE "NO " TO MORE-RECS.
           PERFORM B-200-LOOP
               UNTIL MORE-RECS = "NO ".
       B-200-LOOP.
           PERFORM B-300-DETAIL.
           READ DATA-FILE
               AT END
                  MOVE "NO " TO MORE-RECS.
       B-300-DETAIL.
           MOVE SPACES TO PRINTZ.
           MOVE CUST-NUM-IN TO CUST-NUM-PR.
           MOVE ITEM-NUM-IN TO ITEM-NUM-PR.
           MOVE NUM-ORD-IN TO NUM-ORD-PR.
           MOVE 1 TO SUBZ.
           MOVE "NO " TO MATCH-IND.
           PERFORM B-410-SEARCH
              UNTIL SUBZ > 6 OR MATCH-IND = "YES".
           IF MATCH-IND = 'YES'
              MOVE PRICE-T (SUBZ) TO PRICE-PR
              MULTIPLY PRICE-T (SUBZ) BY NUM-ORD-IN
                 GIVING AMT-DUE-WS
              MOVE AMT-DUE-WS TO AMT-DUE-PR
           ELSE
              MOVE 0 TO PRICE-PR
              MOVE 0 TO AMT-DUE-PR
              MOVE ERR-MSG-CONST TO MSG-AREA-PR.
           WRITE PRINTZ
              AFTER ADVANCING 1 LINES.
       B-410-SEARCH.
           IF ITEM-NUM-IN = ITEM-NUM-T (SUBZ)
               MOVE "YES" TO MATCH-IND
           ELSE
               ADD 1 TO SUBZ.
       U-100-FILL-TABLE.
           READ DATA-FILE INTO TABLE-INPUT
               AT END
                  MOVE "NO " TO MORE-RECS.
           MOVE ITEM-NUM-TI TO ITEM-NUM-T (SUB-IN).
           MOVE PRICE-TI TO PRICE-T (SUB-IN).
           ADD 1 TO SUB-IN.
       C-100-WRAPUP.
           CLOSE DATA-FILE
                 PRINT-FILE.