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
.