       IDENTIFICATION DIVISION.
       PROGRAM-ID. PROG 5.
      *
       ENVIRONMENT DIVISION.
      *
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT STORE-FILE-IN
            ASSIGN TO KEYBOARD
       SELECT STORE-FILE-OUT
            ASSIGN TO DISPLAY
      *
      *
      *
      *
      *
       DATA DIVISION.
      *
      *
       FILE SECTION.
      *
      *
       FD STORE-FILE-IN.
      *
       01 STORE-RECORD-IN             PIC X(25).
      *
       FD STORE-FILE-OUT.
      *
       01 STORE-RECORD-OUT            PIC X(100).
      *    
       WORKING-STORAGE SECTION.
      *
       WS-MORE-INPUT                  PIC X(01) VALUE "Y".
      *
       WS-ERROR-FLAG                  PIC X(01) VALUE "Y".
      *
       WS-STORE-RECORD-IN.
           05                         PIC X(01).
           05 DISTRICT-CODE-IN        PIC X(02).
              88 VALID-DISTRICT-CODE VALUE "20" THRU "80".
              88 DISTRICT-CODE-BLANK VALUE SPACES.
           05                         PIC X(01).   
           05 STORE-CODE-IN.
              10 STORE-CODE-1-IN      PIC X(01).
              10 STORE-CODE-2-IN      PIC X(01).
                 88 VALID-STORE-CODE VALUE "C" THRU "L".
              10 STORE-CODE-3-IN      PIC X(01). 
           05                         PIC X(01).      
           05 DEPARTMENT-CODE-IN.
              10 DEPT-CODE-1-IN       PIC X(02).
              10 DEPT-CODE-2-IN       PIC X(03).
           05                         PIC X(01).
           05 TRANSACTION-TYPE-IN     PIC X(02).
              88 TRANSACTION-BLANK    VALUE SPACES.
           05                         PIC X(01).
           05 TRANSACTION-AMOUNT-IN-X PIC X(07).
           05 TRANSACTION-AMOUNT-IN-9
              REDEFINES
              TRANSACTION-AMOUNT-IN-X PIC 9(05)V99.
      *
       01 WS-HEADING-LINE-1.
           05                         PIC X(08) VALUE "DISTRICT".
           05                         PIC X(01) VALUE SPACES.
           05                         PIC X(05) VALUE "STORE".
           05                         PIC X(01) VALUE SPACES.
           05                         PIC X(10) VALUE "DEPARTMENT".
           05                         PIC X(01) VALUE SPACES.
           05                         PIC X(11) VALUE "TRANSACTION".
      *
       01 WS-HEADING-LINE-2.
      *
       01 WS-DETAIL-LINE
           05 DISTRICT-OUT            PIC X(03).
           05                         PIC X(01) VALUE SPACES.
           05 STORE-OUT               PIC X(03).
           05                         PIC X(01) VALUE SPACES.
           05 DEPARTMENT-OUT          PIC X(05).
           05                         PIC X(01) VALUE SPACES.
           05 TRANSACTION-TYPE-OUT    PIC X(02).
           05                         PIC X(01) VALUE SPACES.
           O5 TRASNACTION-AMOUNT-OUT  PIC X(07).
           05                         PIC X(01) VALUE SPACES.
           05 ERROR-OUT               PIC X(30).
      *
       01 WS-ACCUMULATORS.
           05 WS-GOOD-RECORDS         PIC 9(03) VALUE 0.
           05 WS-BAD-RECORDS          PIC 9(03) VALUE 0.
           05 WS-TRANSACTION-TOTAL    PIC 9(10)V99 VALUE 0.
      *
       01 WS-SUMMARY-LINE-1.
           05                         PIC X(19) VALUE "GOOD RECORDS FOUND:". 
           05                         PIC X(03) VALUE SPACES.
           05 GOOD-RECORDS-OUT        PIC 9(03).
      *
       01 WS-SUMMARY-LINE-2.
           05                         PIC X(18) VALUE "BAD RECORDS FOUND:".
           05                         PIC X(03) VALUE SPACES.
           05 BAD-RECORDS-OUT         PIC 9(03).
      *
       01 WS-SUMMARY-LINE-3.
           05                         PIC X(21) VALUE "TOTAL OF TRANSACTIONS:".
           05                         PIC X(03) VALUE SPACES.
           05 TRANSACTION-AMOUNT-OUT  PIC $(05)9.99.
      *
      *
      *
      *
      *
       PROCEDURE DIVISION.
      *
      *
       MAIN-CONTROL-PARA.
           PERFORM INITIALIZATION-PARA
           PERFORM READ-PARA
           PERFORM HEADINGS-PARA
           PERFORM MAIN-LOOP-PARA
           PERFORM SUMMARY-PAGE-PARA
           PERFORM TERMINATION-PARA
           .
      *
      *
       INITIALIZATION-PARA.
           OPEN INPUT  STORE-FILE-IN
                OUTPUT STORE-FILE-OUT
           .
      *
      *
       READ-PARA.
           READ STORE-FILE-IN
               INTO WS-STORE-RECORD-IN
               AT END MOVE "N" TO WS-MORE-INPUT
           END-READ
           .
      *
      *
       HEADINGS-PARA.
           WRITE STORE-RECORD-OUT FROM WS-HEADING-LINE-1
               AFTER ADVANCING 1 LINE
           .
      *
      *
       MAIN-LOOP-PARA.
           PERFORM DETAIL-LINE-PARA
           PERFORM READ-PARA
           .
      *
      *
       DETAIL-LINE-PARA.
           MOVE DISTRICT-IN TO DISTRICT-OUT
           MOVE STORE-IN TO STORE-OUT
           MOVE DEPARTMENT-IN TO DEPARTMENT-OUT
           MOVE TRANSACTION-TYPE-IN TO TRANSACTION-TYPE-OUT
           MOVE TRANSACTION-AMOUNT-IN-X TO TRANSACTION-AMOUNT-OUT
           WRITE STORE-RECORD-OUT FROM WS-DETAIL-LINE
           PERFORM CHECK-VALUES-PARA
           PERFORM ACCUMULATE-TOTALS-PARA
           .
      *
      *
       CHECK-VALUES-PARA.
           MOVE "NO ERRORS" TO ERROR-OUT
           .
      *
      *     
       ACCUMULATE-TOTALS-PARA.
           ADD 1 TO WS-GOOD-RECORDS
           .   
      *
      *
       SUMMARY-PAGE-PARA.
           MOVE SPACES TO STORE-RECORD-OUT
           WRITE STORE-RECORD-OUT AFTER ADVANCING 5 LINES
           .
      *
      *
       TERMINATION-PARA.
           CLOSE STORE-FILE-IN
                 STORE-FILE-OUT
           STOP RUN
           .               
           
           
                
                                     
             
                  