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.
      ****************************************************************