Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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