       IDENTIFICATION DIVISION.
       PROGRAM-ID.  SAMPLE.
       AUTHOR. NANCY STERN.
      *******************************************
      *  THIS PROGRAM creates AN INDEXED FILE   *
      *******************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
      ***************************************************
      * For PC Compilers add the line:                  *
      *    ORGANIZATION IS LINE SEQUENTIAL              *
      *       for all SEQUENTIAL files in the           *
      *          ASSIGN clause of the SELECT statement  *
      ***************************************************
       FILE-CONTROL.
           SELECT MASTER-FILE-OUT ASSIGN TO DISK 'Ch15ppi.dat'
              ORGANIZATION IS INDEXED
              ACCESS IS SEQUENTIAL
              RECORD KEY MASTER-CUST-NO.
           SELECT ACCOUNT-IN ASSIGN TO DISK 'Ch15pp.dat'
               ORGANIZATION IS LINE SEQUENTIAL.
      *
       DATA DIVISION.
       FILE SECTION.
       FD  MASTER-FILE-OUT
           LABEL RECORDS ARE STANDARD.
       01  MASTER-REC-OUT.
           05  MASTER-CUST-NO           PIC X(5).
           05  MASTER-BALANCE-DUE       PIC 9(3)V99.
       FD  ACCOUNT-IN
           LABEL RECORDS ARE STANDARD.
       01  ACCOUNT-REC-IN.
           05  CUST-NO-IN         PIC X(5).
           05  AMT-IN             PIC 9(3)V99.

       WORKING-STORAGE SECTION.
       01  WS-WORK-AREAS.
           05  ARE-THERE-MORE-RECORDS   PIC X(3)       VALUE 'YES'.
               88  NO-MORE-RECORDS                     VALUE 'NO '.
      *
       PROCEDURE DIVISION.
      *****************************************
      *  CONTROLS DIRECTION OF PROGRAM LOGIC  *
      *****************************************
       100-MAIN-MODULE.
           PERFORM 400-INITIALIZATION-RTN
           PERFORM UNTIL NO-MORE-RECORDS
               READ ACCOUNT-IN
                   AT END
                     MOVE 'NO' TO ARE-THERE-MORE-RECORDS
                   NOT AT END
                     PERFORM 200-CALC-RTN
               END-READ
           END-PERFORM
           PERFORM 500-END-OF-JOB-RTN
           STOP RUN.
      ***********************************************
      *  PERFORMED FROM 100-MAIN-MODULE. CREATES NEW*
      *  RECORDS IN MASTER FILE.                    *
      ***********************************************
       200-CALC-RTN.
           MOVE ACCOUNT-REC-IN TO MASTER-REC-OUT.
           WRITE MASTER-REC-OUT
               INVALID KEY DISPLAY 'INVALID RECORD', ACCOUNT-REC-IN
           END-WRITE.
      *******************************************
      *  PERFORMED FROM 100-MAIN-MODULE.        *
      *  OPENS FILES                            *
      *******************************************
       400-INITIALIZATION-RTN.
           OPEN INPUT  ACCOUNT-IN
                OUTPUT MASTER-FILE-OUT.
      **************************************************
      *  PERFORMED FROM 100-MAIN-MODULE, CLOSES FILES  *
      **************************************************
       500-END-OF-JOB-RTN.
           CLOSE ACCOUNT-IN
                 MASTER-FILE-OUT.

