IDENTIFICATION DIVISION.
       PROGRAM-ID. TBLSOUP3.
       AUTHOR. GROCER.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INPUT-FILE
               ASSIGN TO "C:\PCOBWIN\TABLES\STUTRAN.DAT".
           SELECT TABLE-FILE
               ASSIGN TO "C:\PCOBWIN\TABLES\SOUPONLY.DAT".
           SELECT PRINT-FILE
               ASSIGN TO PRINTER.
       DATA DIVISION.
       FILE SECTION.
       FD  INPUT-FILE
           DATA RECORDS ARE INPUT-REC.
       01  INPUT-REC.
           05  ORDER-NO        PIC 9999.
           05  ITEM-NUMBER-IN  PIC 99.
       FD  TABLE-FILE
           DATA RECORD IS TABLE-REC.
       01  TABLE-REC.
           05  TABLE-ITEM-NUMBER  PIC 99.
           05  TABLE-ITEM-NAME    PIC X(15).
       FD  PRINT-FILE
	   DATA RECORD IS PRINTZ.
       01  PRINTZ.
           05  FILLER                  PIC X.
           05  ORDER-NO-PR             PIC 9999.
           05  FILLER                  PIC X(10).
           05  ITEM-NUMBER-IN-PR       PIC 99.
           05  FILLER                  PIC X(10).
           05  ITEM-NAME-PR            PIC X(15).
           05  FILLER                  PIC X(38).
       WORKING-STORAGE SECTION.
       01  INDICATORZ.
           05  MORE-RECS               PIC XXX     VALUE "YES".
           05  TABLE-MORE-RECS         PIC XXX     VALUE "YES".
           05  MATCH-IND               PIC XXX     VALUE "NO".
       01  SUBSCRIPTS.
           05  SUB-IN                  PIC 99      VALUE 1.
           05  SUB-ITEM                PIC 99      VALUE 1.
       01  TABLE-COMBINED.
           05  ENTRIES  OCCURS 9 TIMES.
               10  ITEM-NUMBER-TBL   PIC 99.
               10  ITEM-NAME-TBL     PIC X(15).
       01  PAGE-CONTROL.
	   05  PAGE-NO	       PIC 99	 VALUE 1.
	   05  LINE-CT	       PIC 99	 VALUE 0.
       01  DATE-WS.
	   05  YR-WS	       PIC 99	 VALUE 0.
	   05  MO-WS	       PIC 99	 VALUE 0.
	   05  DA-WS	       PIC 99	 VALUE 0.
       01  PAGE-HDR.
	   05  FILLER	       PIC XX	 VALUE SPACES.
	   05  DATE-HDR.
	       10  MO-HDR      PIC 99.
	       10  FILLER      PIC X	 VALUE "/".
	       10  DA-HDR      PIC 99.
	       10  FILLER      PIC X	 VALUE "/".
	       10  YR-HDR      PIC 99.
           05  FILLER          PIC X(24) VALUE SPACES.
           05  FILLER          PIC X(11) VALUE "SOUP REPORT".
           05  FILLER          PIC X(23) VALUE SPACES.
	   05  FILLER	       PIC X(5)  VALUE "PAGE ".
	   05  PAGE-NO-HDR     PIC Z9.
	   05  FILLER	       PIC X(5)  VALUE SPACES.
       01  COLUMN-HDR.
	   05  FILLER	       PIC X	 VALUE SPACES.
           05  FILLER          PIC X(5)  VALUE "ORDER".
           05  FILLER          PIC X(7)  VALUE SPACES.
           05  FILLER          PIC X(6)  VALUE "ITEM #".
           05  FILLER          PIC X(8)  VALUE SPACES.
           05  FILLER          PIC X(9)  VALUE "ITEM NAME".
           05  FILLER          PIC X(44) VALUE SPACES.
       PROCEDURE DIVISION.
       MAINLINE.
           PERFORM A-100-INITIALIZE.
           PERFORM B-100-PROCESS.
           PERFORM C-100-WRAPUP.
           STOP RUN.
       A-100-INITIALIZE.
           OPEN INPUT INPUT-FILE, TABLE-FILE
		OUTPUT PRINT-FILE.
           PERFORM U-000-DATE-ROUT.
           MOVE 1 TO SUB-IN.
           PERFORM U-100-FILL-TABLE
               UNTIL SUB-IN > 9 OR TABLE-MORE-RECS = "NO ".
      *
      *NOTE: The MOVE and PERFORM above can be coded here or they
      *could have been coded as the first two commands in the
      *B-100-PROCESS paragraph.  It depends on whether you consider
      *filling the table part of the initializing or setting up of the
      *program or the first part of the processing.
      *
       B-100-PROCESS.
	   READ INPUT-FILE
	       AT END
		   MOVE "NO " TO MORE-RECS.
           PERFORM B-200-LOOP
	       UNTIL MORE-RECS = "NO ".
       B-200-LOOP.
	   IF LINE-CT > 55 OR PAGE-NO = 1
               PERFORM B-310-HDR-ROUT.
           MOVE SPACES TO PRINTZ.
           MOVE ORDER-NO TO ORDER-NO-PR.
           MOVE ITEM-NUMBER-IN TO ITEM-NUMBER-IN-PR.
           MOVE 1 TO SUB-ITEM.
           MOVE "NO " TO MATCH-IND.
           PERFORM B-300-SEARCH
               UNTIL SUB-ITEM > 9 OR MATCH-IND = "YES".
           IF MATCH-IND = "YES"
               MOVE ITEM-NAME-TBL (SUB-ITEM) TO ITEM-NAME-PR
           ELSE
               MOVE "*** INVALID ***" TO ITEM-NAME-PR.
	   WRITE PRINTZ
	       AFTER ADVANCING 1 LINES.
           ADD 1 TO LINE-CT.
           READ INPUT-FILE
               AT END
                  MOVE "NO " TO MORE-RECS.
       B-300-SEARCH.
           IF ITEM-NUMBER-IN = ITEM-NUMBER-TBL (SUB-ITEM)
               MOVE "YES" TO MATCH-IND
           ELSE
               ADD 1 TO SUB-ITEM.
       B-310-HDR-ROUT.
	   MOVE PAGE-NO TO PAGE-NO-HDR.
	   WRITE PRINTZ FROM PAGE-HDR
	       AFTER ADVANCING PAGE.
	   WRITE PRINTZ FROM COLUMN-HDR
	       AFTER ADVANCING 2 LINES.
           MOVE SPACES TO PRINTZ.
           WRITE PRINTZ
               AFTER ADVANCING 1 LINES.
	   ADD 1 TO PAGE-NO.
           MOVE 4 TO LINE-CT.
       C-100-WRAPUP.
           CLOSE INPUT-FILE
                 PRINT-FILE.
       U-000-DATE-ROUT.
	   ACCEPT DATE-WS FROM DATE.
	   MOVE MO-WS TO MO-HDR.
	   MOVE DA-WS TO DA-HDR.
           MOVE YR-WS TO YR-HDR.
       U-100-FILL-TABLE.
           READ TABLE-FILE
                AT END
                   MOVE "NO " TO TABLE-MORE-RECS.
           IF TABLE-MORE-RECS = "YES"
               MOVE TABLE-ITEM-NUMBER TO ITEM-NUMBER-TBL(SUB-IN)
               MOVE TABLE-ITEM-NAME TO ITEM-NAME-TBL(SUB-IN)
               ADD 1 TO SUB-IN.
      *