IDENTIFICATION DIVISION.                                                 
       PROGRAM-ID. CHARGE-PROGRAM.
       AUTHOR. JONAS WIK.
       DATE-WRITTEN. OCTOBER 21ST 2002.
       DATE-COMPILED.
      *****************************************************************
      **
      **   Purpose of the program: 
      **   Input:
      **			FIELD           COLS.        TYPE                 
      **                      
      **
      **   Output: 
      **        
      **   Date Due: October 14th 2002
      **   Date Assigned: September 30th 2002
      **   Dataset Name:
      **
      *****************************************************************
       ENVIRONMENT DIVISION.                                                    
       INPUT-OUTPUT SECTION.                                                    
      **
       FILE-CONTROL.
            SELECT STUDENT-FILE
               ASSIGN TO STUD-FILE
               ORGANIZATION IS LINE SEQUENTIAL.
            SELECT REPORT-FILE
               ASSIGN TO STUDENT-REPORT.
      **
       DATA DIVISION.
      **
       FILE SECTION.
      **
       FD  STUDENT-FILE
           LABEL RECORDS ARE OMITTED
           RECORDING MODE IS F.
       01  SR-REC.
           05 SR-SNO              PIC X(4).
           05 SR-INFO OCCURS 4 TIMES INDEXED BY J.
              10 EX               PIC 99.
      ** 
       FD  REPORT-FILE
           LABEL RECORDS ARE OMITTED
           RECORDING MODE IS F.
       01  STUDENT-REPORT-REC     PIC X(80).
      **
       WORKING-STORAGE SECTION.

       01  WS-CALCULATION-FIELDS.
           05 WC-STUDENT-TOTAL     PIC 999.
           05 WC-STUDENT-AVERAGE   PIC 99.

       01  WS-TOTAL-FIELDS.
           05 WT-EX1-TOTAL         PIC 999.
           05 WT-EX2-TOTAL         PIC 999.
           05 WT-EX3-TOTAL         PIC 999.
           05 WT-EX4-TOTAL         PIC 999.
           05 WT-TOTAL-EXAM        PIC 999.
           05 WT-COUNT             PIC 99.
           05 WT-EXAM-COUNT        PIC 999.
       
       01  WS-DATE.
           05                      PIC XX.
           05 WD-YEAR              PIC 99.
           05 WD-MONTH             PIC 99.
           05 WD-DAY               PIC 99.
           05                      PIC X(13).
     
       01  WS-SWITCHES.
           05 WS-DONE-SW           PIC X(3)   VALUE ' NO'.
              88 DONE                         VALUE 'YES'.
           05 WS-FOUND-SW2         PIC X(3)   VALUE ' NO'.
              88 FOUND                        VALUE 'YES'.
           05 WS-EOF-SW            PIC X(3).
           05 WS-EOF-SW2           PIC X(3).

       01  EXAM-TAB.
           05 STUDENTS OCCURS 20 TIMES INDEXED BY S.
              10 STUDENT-NUM       PIC X(4).
              10 TESTS OCCURS 4 TIMES INDEXED BY T.
                 15 EXAM           PIC 99.

      **             
       01  STUD-FILE               PIC X(9)   VALUE "J:HW4.DAT".
       01  STUDENT-REPORT          PIC X(12)  VALUE "J:STUREP.DAT".
      **    
      **
       01 STUDENT-REPORT-HEADER1.
           05  FILLER              PIC X(9)   VALUE "JONAS WIK".
           05  FILLER              PIC X(26).
           05  FILLER              PIC X(14)  VALUE "STUDENT REPORT".
           05  FILLER              PIC X(32).
           05  FILLER              PIC X(6)   VALUE "DATE: ".
           05  HEADING-MONTH       PIC Z9.
           05  FILLER              PIC X      VALUE '/'.
           05  HEADING-DAY         PIC Z9.
           05  FILLER              PIC X      VALUE '/'.
           05  HEADING-YEAR        PIC 99.
      **
       01 STUDENT-REPORT-HEADER2.
           05  FILLER              PIC X(14)  VALUE "STUDENT NUMBER".
           05  FILLER              PIC XX.
           05  FILLER              PIC X(6)   VALUE "EXAM 1".
           05  FILLER              PIC XX.
           05  FILLER              PIC X(6)   VALUE "EXAM 2".
           05  FILLER              PIC XX.
           05  FILLER              PIC X(6)   VALUE "EXAM 3".
           05  FILLER              PIC XX.
           05  FILLER              PIC X(6)   VALUE "EXAM 4".
           05  FILLER              PIC XX.
           05  FILLER              PIC X(10)   VALUE "TOTAL EXAM".
           05  FILLER              PIC XX.
           05  FILLER              PIC X(12)   VALUE "AVERAGE EXAM".

      **
      **
       01  STUDENT-REPORT-DETAIL-LINE.
           05 FILLER               PIC X(4).
           05 SR-STUDNO            PIC X(4).
           05 FILLER               PIC X(10).
           05 SR-EX1               PIC 99.
           05 FILLER               PIC X(10).
           05 SR-EX2               PIC 99.
           05 FILLER               PIC X(6).
           05 SR-EX3               PIC 99.
           05 FILLER               PIC X(7).
           05 SR-EX4               PIC 99.
           05 FILLER               PIC X(5).
           05 SR-TOTAL-EXAM        PIC 999.
           05 FILLER               PIC X(5).
           05 SR-AVERAGE-EXAM      PIC 99.
      **
      
       01  END-OF-JOB-LINE.
           05                      PIC X(35)  VALUE SPACES.
           05                      PIC X(30)  VALUE
               "N O R M A L  E N D  O F  J O B".
  
       PROCEDURE DIVISION.

      **
      **************************************************************
      **   THIS PARAGRAPH IS THE MAIN MODULE OF THE PROGRAM.  ALL   
      **   PARAGRAPHS IN THE PROGRAM ARE EXECUTED UNDER THE CONTROL 
      **   OF THIS MODULE.                                          
      **************************************************************
      **
       0000-MAIN-RTN.
           PERFORM 0100-INIT-RTN THRU 0100-INIT-RTN-EXIT
           PERFORM 0800-HDG-RTN  THRU 0800-HDG-RTN-EXIT
           SET S TO 1.
           PERFORM 0200-SEARCH-RTN THRU 0200-SEARCH-RTN-EXIT UNTIL DONE.
           MOVE 'NO' TO WS-DONE-SW.
           PERFORM 1000-ENDOFJOB-RTN THRU 1000-ENDOFJOB-RTN-EXIT
           CLOSE STUDENT-FILE
                 REPORT-FILE
           STOP RUN.				
      **
      ***************************************************************
      **    CALLED BY 000-MAIN-LINE-RTN.  INITIALIZES VALUES AND OPENS
      **    THE FILES INVOLVED.
      ***************************************************************
      ** 
       0100-INIT-RTN.
           OPEN INPUT  STUDENT-FILE
                OUTPUT REPORT-FILE
           INITIALIZE  WS-CALCULATION-FIELDS
                       WS-TOTAL-FIELDS
      *    SET D TO 1
           PERFORM 0770-DATE-MOVE-RTN THRU 0770-DATE-MOVE-RTN-EXIT
           PERFORM 0300-READ UNTIL WS-EOF-SW = 'YES'.
       0100-INIT-RTN-EXIT. EXIT.
      **
      *****************************************************************
      *****************************************************************
      **

       0200-SEARCH-RTN.
           SEARCH STUDENTS
              AT END MOVE 'YES' TO WS-DONE-SW
              WHEN EXAM(S,T) < 60
                   ADD 1 TO WT-COUNT
                   SET S UP BY 1
           END-SEARCH.
       0200-SEARCH-RTN-EXIT. EXIT.

       0300-READ.
           READ STUDENT-FILE
               AT END MOVE 'YES' TO WS-EOF-SW
               PERFORM 0400-FILL-TABLE THRU 0400-FILL-TABLE-EXIT
               VARYING S FROM 1 BY 1 UNTIL S > 20
           END-READ.
       0300-READ-EXIT.EXIT.
      **
       0400-FILL-TABLE.
           PERFORM 0500-FILL-TABLE THRU 0500-FILL-TABLE-EXIT
               VARYING T FROM 1 BY 1 UNTIL T > 4.
           MOVE SR-SNO TO STUDENT-NUM(S).
           MOVE SR-SNO TO SR-STUDNO.
           PERFORM 0600-COMPUTE-TOTALS-RTN THRU
           0600-COMPUTE-TOTALS-RTN-EXIT.
           WRITE STUDENT-REPORT-REC FROM STUDENT-REPORT-DETAIL-LINE
               AFTER ADVANCING 1 LINE.
           READ STUDENT-FILE
               AT END MOVE 'YES' TO WS-EOF-SW
           END-READ.
       0400-FILL-TABLE-EXIT.EXIT.

       0500-FILL-TABLE.
           SET J TO T.
           MOVE EX(J) TO EXAM(S,T)
           ADD 1 TO WT-EXAM-COUNT.
           EVALUATE T
              WHEN 1
                  MOVE EXAM(S,T) TO SR-EX1
                  ADD EXAM(S,T)  TO WT-EX1-TOTAL
              WHEN 2
                  MOVE EXAM(S,T) TO SR-EX2
                  ADD EXAM(S,T)  TO WT-EX2-TOTAL
              WHEN 3
                  MOVE EXAM(S,T) TO SR-EX3
                  ADD EXAM(S,T)  TO WT-EX3-TOTAL
              WHEN 4
                  MOVE EXAM(S,T) TO SR-EX4
                  ADD EXAM(S,T)  TO WT-EX4-TOTAL
              END-EVALUATE.
           ADD EXAM(S,T) TO WT-TOTAL-EXAM.

       0500-FILL-TABLE-EXIT.EXIT.

       0600-COMPUTE-TOTALS-RTN.
           COMPUTE WC-STUDENT-TOTAL = SR-EX1 + SR-EX2 + SR-EX3 + SR-EX4.
           COMPUTE WC-STUDENT-AVERAGE = WC-STUDENT-TOTAL / 4.
           MOVE WC-STUDENT-TOTAL TO SR-TOTAL-EXAM.
           MOVE WC-STUDENT-AVERAGE TO SR-AVERAGE-EXAM.
           INITIALIZE WS-CALCULATION-FIELDS.


       0600-COMPUTE-TOTALS-RTN-EXIT.EXIT.

      **
      *****************************************************************
      ** THIS PARAGRAPH MOVES THE DATE TO THE HEADING
      *****************************************************************
      **
       0770-DATE-MOVE-RTN.
           MOVE FUNCTION CURRENT-DATE TO WS-DATE.
           MOVE WD-MONTH TO HEADING-MONTH.
           MOVE WD-DAY TO HEADING-DAY.
           MOVE WD-YEAR TO HEADING-YEAR.

       0770-DATE-MOVE-RTN-EXIT.EXIT.
      **
      *****************************************************************
      ** THIS PARAGRAPH PRINTS THE HEADINGS
      *****************************************************************
      **
       0800-HDG-RTN.
           WRITE STUDENT-REPORT-REC FROM STUDENT-REPORT-HEADER1 AFTER
              ADVANCING 2 LINES.
           WRITE STUDENT-REPORT-REC FROM STUDENT-REPORT-HEADER2 AFTER
              ADVANCING 2 LINES.

       0800-HDG-RTN-EXIT.
       1000-ENDOFJOB-RTN.
           WRITE STUDENT-REPORT-REC FROM END-OF-JOB-LINE
                                 AFTER ADVANCING 2 LINES.
          
       1000-ENDOFJOB-RTN-EXIT. EXIT.
       
      *****************************************************************