IDENTIFICATION DIVISION. PROGRAM-ID. BANK-PROGRAM. AUTHOR. JONAS WIK. DATE-WRITTEN. NOVEMBER 5TH 2002. DATE-COMPILED. ***************************************************************** ** ** Purpose of the program: ** Input: HW3.DAT ** FIELD COLS. TYPE ** SR-DISTRICT 1 N ** SR-BRANCH 2 N ** SR-SLS-PERSON-NUM 4-5 N ** SR-CUST-NUM 7-10 N ** SR-ITEM-NUM 12-14 N ** SR-QTY 15-17 N ** SR-UNIT-PRICE 20-24 N ** ** Output: SALES-REPORT (A:SLSREP.DAT) ** ** Date Due: November 13th 2002 ** Date Assigned: October 30th 2002 ** Dataset Name: ** ***************************************************************** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. ** FILE-CONTROL. SELECT SALES-FILE ASSIGN TO UT-S-SFILE ORGANIZATION IS LINE SEQUENTIAL. SELECT SALES-REPORT ASSIGN TO UT-S-SREPORT. ** DATA DIVISION. ** FILE SECTION. ** FD SALES-FILE LABEL RECORDS ARE OMITTED RECORDING MODE IS F. 01 SALES-REC. 05 SR-DISTRICT PIC 9. 05 SR-BRANCH PIC 9. 05 FILLER PIC X. 05 SR-SLS-PERSON-NUM PIC 99. 05 FILLER PIC X. 05 SR-CUST-NUM PIC 9(4). 05 FILLER PIC X. 05 SR-ITEM-NUM PIC 9(3). 05 SR-QTY PIC 9(3). 05 FILLER PIC XX. 05 SR-UNIT-PRICE PIC 9(3)V99. ** FD SALES-REPORT REPORT IS SALE-REPORT. WORKING-STORAGE SECTION. 01 FILE-INFO. 05 UT-S-SFILE PIC X(9) VALUE "J:HW3.DAT". 05 UT-S-SREPORT PIC X(12) VALUE "J:SLSREP.DAT". 01 WS-SWITCHES. 05 WS-EOF-SW PIC X(3). 88 WS-EOF VALUE "YES". 01 TOTAL-FIELDS. 05 TF-SALES PIC 9(6)V99. 05 TF-SLS-PERS-TOT PIC 9(7)V99. 05 TF-BRANCH-TOT PIC 9(6)V99. 05 TF-DISTRICT-TOT PIC 9(6)V99. REPORT SECTION. RD SALE-REPORT CONTROLS ARE FINAL SR-DISTRICT SR-BRANCH SR-SLS-PERSON-NUM SR-CUST-NUM PAGE LIMIT IS 58 LINES HEADING 01 LAST DETAIL 55 FOOTING 57. 01 TYPE IS PAGE HEADING. 05 LINE 1. 10 COLUMN 1 PIC X(20) VALUE "SALES SUMMARY REPORT". 10 COLUMN 70 PIC X(5) VALUE "PAGE ". 10 COLUMN 76 PIC Z9 SOURCE PAGE-COUNTER. 01 TYPE IS CONTROL HEADING SR-DISTRICT. 05 LINE IS PLUS 2. 10 COLUMN 1 PIC X(19) VALUE "SALES FOR DISTRICT ". 10 COLUMN 20 PIC 9 SOURCE SR-DISTRICT. 10 COLUMN 61 PIC X(17) VALUE "COMMULATIVE SALES". 05 LINE IS PLUS 1. 10 COLUMN 61 PIC X(13) VALUE "FOR DISTRICT ". 10 COLUMN 75 PIC 9 SOURCE SR-DISTRICT. 01 TYPE IS CONTROL HEADING SR-BRANCH. 05 LINE IS PLUS 2. 10 COLUMN 8 PIC X(17) VALUE "SALES FOR BRANCH ". 10 COLUMN 26 PIC 9 SOURCE SR-BRANCH. 10 COLUMN 50 PIC X(17) VALUE "COMMULATIVE SALES". 05 LINE IS PLUS 1. 10 COLUMN 50 PIC X(11) VALUE "FOR BRANCH ". 10 COLUMN 61 PIC 9 SOURCE SR-BRANCH. 01 TYPE IS CONTROL HEADING SR-SLS-PERSON-NUM. 05 LINE IS PLUS 2. 10 COLUMN 12 PIC X(22) VALUE "SALES FOR SALESPERSON ". 10 COLUMN 35 PIC 99 SOURCE SR-SLS-PERSON-NUM. 10 COLUMN 38 PIC X(17) VALUE "COMMULATIVE SALES". 05 LINE IS PLUS 1. 10 COLUMN 38 PIC X(16) VALUE "FOR SALESPERSON ". 10 COLUMN 55 PIC 99 SOURCE SR-SLS-PERSON-NUM. 05 LINE IS PLUS 2. 10 COLUMN 15 PIC X(17) VALUE "CUSTOMER SALES". 05 LINE IS PLUS 1. 10 COLUMN 16 PIC X(17) VALUE "NUMBER AMOUNT". 01 CUST-SUM TYPE IS CONTROL FOOTING SR-CUST-NUM LINE IS PLUS 1. 05 COLUMN 17 PIC 9(4) SOURCE SR-CUST-NUM. 05 COLUMN 26 PIC $(6).99 SUM TF-SALES. 05 COLUMN 39 PIC $(7).99 SOURCE TF-SLS-PERS-TOT. 05 COLUMN 54 PIC $(7).99 SOURCE TF-BRANCH-TOT. 05 COLUMN 66 PIC $(8).99 SOURCE TF-DISTRICT-TOT. 01 DETAIL-LINE TYPE IS DETAIL. 01 SLS-PERS-TOT TYPE IS CONTROL FOOTING SR-SLS-PERSON-NUM LINE IS PLUS 2. 05 COLUMN 15 PIC X(18) VALUE "FINAL SALESPERSON ". 05 COLUMN 34 PIC 99 SOURCE SR-SLS-PERSON-NUM. 05 COLUMN 37 PIC X(8) VALUE " TOTAL ". 05 COLUMN 46 PIC $(8).99 SUM TF-SALES. 01 BRANCH-TOT TYPE IS CONTROL FOOTING SR-BRANCH LINE IS PLUS 2. 05 COLUMN 38 PIC X(13) VALUE "FINAL BRANCH ". 05 COLUMN 52 PIC 9 SOURCE SR-BRANCH. 05 COLUMN 54 PIC X(8) VALUE " TOTAL ". 05 COLUMN 62 PIC $(8).99 SUM TF-SALES. * 01 DISTRICT-TOT TYPE IS CONTROL FOOTING SR-DISTRICT LINE IS PLUS 2. 05 COLUMN 45 PIC X(14) VALUE "FINAL DISTRICT". 05 COLUMN 61 PIC 9 SOURCE SR-DISTRICT. 05 COLUMN 63 PIC X(7) VALUE "TOTAL ". 05 COLUMN 69 PIC $(8).99 SUM TF-SALES. * 01 GRAND-TOT TYPE IS CONTROL FOOTING FINAL LINE IS PLUS 2. 05 COLUMN 53 PIC X(18) VALUE "GRAND SALES TOTAL ". 05 COLUMN 72 PIC $(9).99 SUM TF-SALES. * 01 TYPE IS REPORT FOOTING. 05 LINE 58 COLUMN 40 PIC X(15) VALUE "*END OF REPORT*". ** PROCEDURE DIVISION. DECLARATIVES. SUM-SLS-PERSON SECTION. ** THIS INITIALIZES THE RUNNING TOTAL FOR SALES PERSON WHEN THE ** SALES PERSON CHANGES USE BEFORE REPORTING SLS-PERS-TOT. D-200-SUM-SLS-PERSON. INITIALIZE TF-SLS-PERS-TOT. * SUM-BRANCH SECTION. ** THIS INITIALIZES THE RUNNING TOTAL FOR THE BRANCH WHEN THE ** BRANCH CHANGES * USE BEFORE REPORTING BRANCH-TOT. D-300-SUM-BRANCH. INITIALIZE TF-BRANCH-TOT. * SUM-DISTRICT SECTION. ** THIS INITIALIZES THE RUNNING TOTAL FOR THE DISTRICT WHEN THE ** DISTRICT CHANGES * USE BEFORE REPORTING DISTRICT-TOT. D-400-SUM-DISTRICT. INITIALIZE TF-DISTRICT-TOT. END DECLARATIVES. *************************************************************** ** THIS IS THE MAIN ROUTINE. THIS CALLS THE INITIALIZE RTN ** AND INITIATES THE REPORT. IT ALSO READS THE FILE UNTIL EOF ** AND CALLS THE PROCESS RTN. AT THE END IT TERMINATES THE ** REPORT AND CLOSES THE FILES. *************************************************************** 0000-PRODUCE-SALES-REPORT. PERFORM 0100-INIT-RTN THRU 0100-INIT-RTN-EXIT. INITIATE SALE-REPORT. PERFORM UNTIL WS-EOF READ SALES-FILE AT END MOVE "YES" TO WS-EOF-SW NOT AT END PERFORM 0200-PROCESS-RTN THRU 0200-PROCESS-RTN-EXIT END-READ END-PERFORM. TERMINATE SALE-REPORT. CLOSE SALES-FILE SALES-REPORT. STOP RUN. ** *************************************************************** ** CALLED BY 0000-PRODUCE-SALES-REPORT INITIALIZES VALUES AND ** OPENS THE FILES INVOLVED. *************************************************************** ** 0100-INIT-RTN. OPEN INPUT SALES-FILE OUTPUT SALES-REPORT INITIALIZE TOTAL-FIELDS MOVE "NO " TO WS-EOF-SW. 0100-INIT-RTN-EXIT. EXIT. **************************************************************** ** CALLED BY 0000-PRODUCE-SALES-REPORT. THIS COMPUTES THE ** TF-SALES BY MULTIPLYING QTY AND PRICE. IT ALSO GENERATES THE ** REPORT AND ADDS THE SALES TO CUMMULATIVE TOTALS FOR SALES ** PERSON, BRANCH AND THE DISTRICT **************************************************************** 0200-PROCESS-RTN. COMPUTE TF-SALES = SR-QTY * SR-UNIT-PRICE GENERATE DETAIL-LINE ADD TF-SALES TO TF-SLS-PERS-TOT. ADD TF-SALES TO TF-BRANCH-TOT. ADD TF-SALES TO TF-DISTRICT-TOT. 0200-PROCESS-RTN-EXIT. EXIT. ****************************************************************