I have to modify the program to print the total amount of all purchases for all
ID: 3814515 • Letter: I
Question
I have to modify the program to print the total amount of all purchases for all customers at the end of the report. Basically the sum total of all purchases.
Here is the program:
******************************************************************
* Author: Kearesten Patterson
* Date: 04/09/2017
* Purpose:
* Tectonics: cobc
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. PattersonkA4.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PURCHASE-TRANS ASSIGN TO 'CH6PPB.DAT'
ORGANIZATION IS LINE SEQUENTIAL.
SELECT PURCHASE-REPORT ASSIGN TO 'PattersonkA4.RPT'
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD PURCHASE-TRANS
RECORD CONTAINS 32 CHARACTERS.
01 TRANS-REC-IN.
05 CUST-NO-IN PIC X(5).
05 CUST-NAME-IN PIC X(20).
05 AMT-OF-PUR-IN PIC 9(5)V99.
FD PURCHASE-REPORT
RECORD CONTAINS 80 CHARACTERS.
01 PRINT-REC PIC X(80).
WORKING-STORAGE SECTION.
01 WORK-AREAS.
05 ARE-THERE-MORE-RECORDS PIC XXX
VALUE 'YES'.
05 WS-DATE.
10 WS-YEAR PIC 9999.
10 WS-MONTH PIC 99.
10 WS-DAY PIC 99.
05 WS-PAGE-CT PIC 99
VALUE ZERO.
05 WS-LINE-CT PIC 99
VALUE ZERO.
01 HDR1-OUT.
05 PIC X(40)
VALUE SPACES.
05 PIC X(20)
VALUE 'PURCHASE REPORT'.
05 DATE-OUT.
10 MONTH-OUT PIC 99.
10 PIC X
VALUE '/'.
10 DAY-OUT PIC 99.
10 PIC X
VALUE '/'.
10 YEAR-OUT PIC 9999.
05 PIC X(2)
VALUE SPACES.
05 PIC X(5)
VALUE 'PAGE'.
05 PAGE-OUT PIC Z9.
01 HDR2-OUT.
05 PIC X(10)
VALUE SPACES.
05 PIC X(27)
VALUE 'CUSTOMER NO CUSTOMER NAME'.
05 PIC X(13)
VALUE SPACES.
05 PIC X(18)
VALUE 'AMOUNT OF PURCHASE'.
01 DETAIL-REC-OUT.
05 PIC X(13)
VALUE SPACES.
05 CUST-NO-OUT PIC X(5).
05 PIC X(6)
VALUE SPACES.
05 CUST-NAME-OUT PIC X(20).
05 PIC X(11)
VALUE SPACES.
05 AMT-OF-PUR-OUT PIC Z(5).99.
PROCEDURE DIVISION.
*****************************************************************
* ALL PROGRAM LOGIC IS CONTROLLED BY *
* 100-MAIN-MODULE *
*****************************************************************
100-MAIN-PROCEDURE.
OPEN INPUT PURCHASE-TRANS
OUTPUT PURCHASE-REPORT
MOVE FUNCTION CURRENT-DATE TO WS-DATE
MOVE WS-MONTH TO MONTH-OUT
MOVE WS-DAY TO DAY-OUT
MOVE WS-YEAR TO YEAR-OUT
PERFORM 200-HDG-RTN.
PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO '
READ PURCHASE-TRANS
AT END
MOVE 'NO ' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 300-REPORT-RTN
END-READ
END-PERFORM
CLOSE PURCHASE-TRANS
PURCHASE-REPORT
STOP RUN.
*****************************************************************
* 200-HDG-RTN IS EXECUTED ONCE FROM THE MAIN MODULE *
* AND THEN AGAIN AFTER 25 DEGTAIL LINES PRINT *
*****************************************************************
200-HDG-RTN.
ADD 1 TO WS-PAGE-CT
MOVE WS-PAGE-CT TO PAGE-OUT
WRITE PRINT-REC FROM HDR1-OUT
AFTER ADVANCING PAGE
WRITE PRINT-REC FROM HDR2-OUT
AFTER ADVANCING 2 LINES
MOVE ZEROS TO WS-LINE-CT.
*****************************************************************
* 300-REPORT-RTN IS EXECUTED FROM THE MAIN MODULE *
* UNTIL ALL INPUT RECORDS HAVED BEEN PROCESSED *
*****************************************************************
300-REPORT-RTN.
IF WS-LINE-CT >= 25
PERFORM 200-HDG-RTN
END-IF
MOVE CUST-NO-IN TO CUST-NO-OUT
MOVE CUST-NAME-IN TO CUST-NAME-OUT
MOVE AMT-OF-PUR-IN TO AMT-OF-PUR-OUT
WRITE PRINT-REC FROM DETAIL-REC-OUT
AFTER ADVANCING 2 LINES
ADD 1 TO WS-LINE-CT.
END PROGRAM PattersonkA4.
Explanation / Answer
IDENTIFICATION DIVISION.
PROGRAM-ID. ASSIGN-6.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN6 ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
SELECT OUT6 ASSIGN TO DISK
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD IN6
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "IN6.TXT".
01 IN5-REC.
05 CUST-CODE-IN PIC X(3).
05 ITEM-CODE-IN PIC X(3).
05 PURCHASE-AMT-IN PIC 9(4)V99.
FD OUT6
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "OUT6.TXT".
01 OUTREC PIC X(80).
WORKING-STORAGE SECTION.
77 ARE-THERE-MORE-REC PIC XXX VALUE 'YES'.
77 BOF PIC XXX VALUE 'YES'.
77 WS-CUSTCODE-HOLD PIC X(3).
77 WS-TOTAL PIC 9(6)V99 VALUE 0.
77 WS-REBET PIC 9(4)V99.
01 H1.
05 STAR PIC X(80) VALUE ALL '*'.
01 H2.
05 CUST-CODE PIC X(10) VALUE 'CUST-CODE'.
05 FILLER PIC X(1).
05 IT-CODE PIC X(7) VALUE 'IT-CODE'.
05 FILLER PIC X(3).
05 PUR-AMT PIC X(10) VALUE 'PURCH-AMT.'.
05 FILLER PIC X(1).
05 REBET PIC X(5) VALUE 'REBET'.
05 FILLER PIC X(3).
05 REBET PIC X(10) VALUE 'NET-AMT'.
01 H3.
05 SPS PIC X(80) VALUE ALL SPACE.
01 OUT6-REC.
05 CUST-CODE-OUT PIC 9(3).
05 FILLER PIC X(8).
05 ITEM-CODE-OUT PIC 9(3).
05 FILLER PIC X(6).
05 PURCHASE-AMT-OUT PIC $9(4).99.
05 FILLER PIC X(5).
05 REBET-OUT PIC $9(4).99.
05 FILLER PIC X(5).
05 NET-OUT PIC $9(6).99.
01 TOTAL-REC.
05 SPS PIC X(20) VALUE ALL SPACES.
05 MSG PIC X(30) VALUE "TOTAL PURCHASE AMOUNT IS :=> ".
05 TOTAL-OUT PIC $9(6).99
PROCEDURE DIVISION.
MAIN-PARA.
OPEN INPUT IN6
OUTPUT OUT6.
WRITE OUTREC FROM H3.
WRITE OUTREC FROM H1.
WRITE OUTREC FROM H2.
WRITE OUTREC FROM H1.
WRITE OUTREC FROM H3.
READ IN6
AT END MOVE 'NO' TO ARE-THERE-MORE-REC.
PERFORM PARA-1 UNTIL ARE-THERE-MORE-REC = 'NO'.
CLOSE IN6.
CLOSE OUT6.
STOP RUN.
PARA-1.
IF BOF = 'YES'
MOVE CUST-CODE-IN TO WS-CUSTCODE-HOLD
MOVE 'NO' TO BOF
ELSE IF CUST-CODE-IN NOT = WS-CUSTCODE-HOLD
PERFORM CONTROL-BREAK-RTN
WRITE OUTREC FROM H3.
MOVE CUST-CODE-IN TO CUST-CODE-OUT.
MOVE ITEM-CODE-IN TO ITEM-CODE-OUT.
MOVE PURCHASE-AMT-IN TO PURCHASE-AMT-OUT.
COMPUTE WS-TOTAL = WS-TOTAL + PURCHASE-AMT-IN.
IF PURCHASE-AMT-IN < 1000 OR PURCHASE-AMT-IN = 1000
COMPUTE WS-REBET = PURCHASE-AMT-IN * (0.015)
ELSE IF PURCHASE-AMT-IN > 1000 AND PURCHASE-AMT-IN < 7000
/ OR PURCHASE-AMT-IN = 7000
COMPUTE WS-REBET = PURCHASE-AMT-IN * (0.025)
ELSE IF PURCHASE-AMT-IN > 7000
COMPUTE WS-REBET = PURCHASE-AMT-IN * (0.03).
COMPUTE NET-OUT = PURCHASE-AMT-IN - WS-REBET.
MOVE WS-REBET TO REBET-OUT.
WRITE OUTREC FROM OUT6-REC.
READ IN6 AT END MOVE 'NO' TO ARE-THERE-MORE-REC
PERFORM CONTROL-BREAK-RTN.
CONTROL-BREAK-RTN.
WRITE OUTREC FROM H3.
MOVE WS-TOTAL TO TOTAL-OUT.
WRITE OUTREC FROM TOTAL-REC
MOVE 'YES' TO BOF.
MOVE 0 TO WS-TOTAL.
MOVE SPACE TO WS-CUSTCODE-HOLD.
try this, it displays the customer id and summ the purchases
hope it helps