IDENTIFICATION DIVISION.
       PROGRAM-ID. TWODIM.
       AUTHOR. GROCER.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT INPUT-FILE ASSIGN TO "C:\pcobwin\cis12fst\TWODIM.DAT".
       SELECT PRINT-FILE ASSIGN TO PRINTER.
       DATA DIVISION.
       FILE SECTION.
       FD  INPUT-FILE
           DATA RECORD IS INPUT-REC.
       01  INPUT-REC.
           05  CUST-ID         PIC X(4).
           05  FROM-CITY       PIC 9.
           05  TO-CITY         PIC 9.
       FD  PRINT-FILE
           DATA RECORD IS PRINTZ.
       01  PRINTZ.
           05  FILLER          PIC X(4).
           05  CUST-ID-PR      PIC X(4).
           05  FILLER          PIC X(15).
           05  FROM-CITY-PR    PIC X(10).
           05  FILLER          PIC X(5).
           05  TO-CITY-PR      PIC X(10).
           05  FILLER          PIC X(5).
           05  FARE-PR         PIC $ZZZ.99.
           05  FILLER          PIC X(20).
       WORKING-STORAGE SECTION.
       01  PROGRAM-INDICATORS.
           05   MORE-RECS            PIC XXX     VALUE "YES".
       01  WORK-AREAS.
           05  INV-VALUE-WS          PIC 9(5)V99 VALUE 0.
       01  FROM-CITY-TABLE.
           05  FILLER PIC X(10) VALUE "BOSTON    ".
           05  FILLER PIC X(10) VALUE "PROVIDENCE".
           05  FILLER PIC X(10) VALUE "NEW YORK  ".
       01  RDF-FROM-CITY-TABLE REDEFINES FROM-CITY-TABLE.
           05  FROM-CITY-NAME PIC X(10) OCCURS 3 TIMES.
       01  TO-CITY-TABLE.
           05  FILLER PIC X(10) VALUE "ISTANBUL  ".
           05  FILLER PIC X(10) VALUE "BUDAPEST  ".
           05  FILLER PIC X(10) VALUE "FRANKFORT ".
           05  FILLER PIC X(10) VALUE "LONDON    ".
           05  FILLER PIC X(10) VALUE "PRAGUE    ".
       01  RDF-TO-CITY-TABLE REDEFINES TO-CITY-TABLE.
           05  TO-CITY-NAME PIC X(10) OCCURS 5 TIMES.
       01  FARE-TABLE.
           05  FROM-BOSTON.
               10  TO-ISTANBUL  PIC 999V99   VALUE 851.00.
               10  TO-BUDAPEST  PIC 999V99   VALUE 549.50.
               10  TO-FRANKFORT PIC 999V99   VALUE 659.95.
               10  TO-LONDON    PIC 999V99   VALUE 499.00.
               10  TO-PRAGUE    PIC 999V99   VALUE 498.99.
           05  FROM-PROVIDENCE.
               10  TO-ISTANBUL  PIC 999V99   VALUE 929.00.
               10  TO-BUDAPEST  PIC 999V99   VALUE 612.75.
               10  TO-FRANKFORT PIC 999V99   VALUE 628.99.
               10  TO-LONDON    PIC 999V99   VALUE 525.00.
               10  TO-PRAGUE    PIC 999V99   VALUE 550.00.
           05  FROM-NEW-YORK.
               10  TO-ISTANBUL  PIC 999V99   VALUE 799.99.
               10  TO-BUDABEST  PIC 999V99   VALUE 526.89.
               10  TO-FRANKFORT PIC 999V99   VALUE 498.99.
               10  TO-LONDON    PIC 999V99   VALUE 425.00.
               10  TO-PRAGUE    PIC 999V99   VALUE 512.00.
       01  RDF-FARE-TABLE REDEFINES FARE-TABLE.
           05  TO-CITIES OCCURS 3 TIMES.
               10  FARE  PIC 999V99 OCCURS 5 TIMES.
       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(22) VALUE SPACES.
           05  FILLER          PIC X(16) VALUE "AIR FARE  REPORT".
           05  FILLER          PIC X(20) 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(10) VALUE "PASSENGER ".
           05  FILLER          PIC X(12) VALUE SPACES.
           05  FILLER          PIC X(10) VALUE "ORIGINATE ".
           05  FILLER          PIC X(5)  VALUE SPACES.
           05  FILLER          PIC X(11) VALUE "DESTINATION".
           05  FILLER          PIC X(6)  VALUE SPACES.
           05  FILLER          PIC X(4)  VALUE "FARE".
           05  FILLER          PIC X(16) VALUE SPACES.
       PROCEDURE DIVISION.
       MAINLINE.
           PERFORM A-100-STARTUP.
           PERFORM B-100-PROCESS.
           PERFORM C-100-WRAPUP.
           STOP RUN.
       A-100-STARTUP.
           OPEN INPUT INPUT-FILE
                OUTPUT PRINT-FILE.
           PERFORM U000-DATE-ROUT.
       B-100-PROCESS.
           READ INPUT-FILE
               AT END
                   MOVE "NO " TO MORE-RECS.
           PERFORM B-200-LOOP
               UNTIL MORE-RECS = "NO ".
       B-200-LOOP.
           PERFORM B-300-DETAIL.
           READ INPUT-FILE
               AT END
                   MOVE "NO " TO MORE-RECS.
       B-300-DETAIL.
           IF LINE-CT > 55 OR PAGE-NO = 1
               PERFORM B-400-HDR-ROUT.
           MOVE SPACES TO PRINTZ.
           MOVE CUST-ID TO CUST-ID-PR.
           MOVE FROM-CITY-NAME (FROM-CITY) TO FROM-CITY-PR.
           MOVE TO-CITY-NAME (TO-CITY) TO TO-CITY-PR.
           MOVE FARE (FROM-CITY, TO-CITY) TO FARE-PR.
           WRITE PRINTZ
               AFTER ADVANCING 1 LINES.
           ADD 1 TO LINE-CT.
       B-400-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.
       U000-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.
       C-100-WRAPUP.
           CLOSE INPUT-FILE
                 PRINT-FILE.