IDENTIFICATION DIVISION.
        PROGRAM-ID. STEP3.
        AUTHOR. JUSTIN ANDERSON, JONAS WIK, BRAD ROUDEBUSH,OMID KARBASSI
        DATE-WRITTEN. 03/14/2002.
        DATE-COMPILED. 
      *
      ******************************************************************
      *                                                                *
      *                      RANDOM UPDATE                             *
      *                                                                *
      * PURPOSE: THIS PROGRAM UPDATES A VSAM FILE RANDOMLY.  A REPORT  *
      *          IS PRODUCED SHOWING WHAT ACTION WAS TAKEN FOR EACH    *
      *          TRANSACTION RECORD.                                   *
      *                                                                *
      * INPUT:                                                         *
      *              FIELD           PIC CLAUSE                        *
      *          MR-NUMBER            PIC X(4).                        *
      *          MR-DESCR             PIC X(16).                       *
      *          MR-VENDOR            PIC X(10).                       *
      *          MR-PRICE             PIC 9(4)V99 COMP-3.              *
      *          MR-QTY-ON-HAND       PIC 9(3) COMP-3.                 *
      *          MR-QTY-ON-ORDER      PIC 9(3) COMP-3.                 *
      *          MR-ROP               PIC 99 COMP-3.                   * 
      *          MR-YTD-SOLD          PIC 9(5) COMP-3.                 *
      *                                                                *
      *         TR-NUMBER             PIC X(4).                        *
      *         TR-DPTION             PIC X(16).                       *
      *         TR-SPACE              PIC X(10).                       *
      *         TR-PRICE              PIC 9999V99.                     *
      *         TR-QTY-SOLD           PIC 999.                         *
      *         TR-QTY-REC            PIC 999.                         *
      *         TR-ROP                PIC 99.                          *
      *         TR-SPACE2             PIC X(6).                        *
      *         TR-ACTION             PIC X.                           *
      *                                                                *
      ******************************************************************
      *
        ENVIRONMENT DIVISION.
      *
        CONFIGURATION SECTION.
      *
        INPUT-OUTPUT SECTION.
      *
        FILE-CONTROL.
            SELECT STEP4-FILE
               ASSIGN TO STEP4
               ORGANIZATION IS INDEXED
               ACCESS IS RANDOM
               RECORD KEY MR-NUMBER
               FILE STATUS IS STNAME.

      *
            SELECT STEP4-REPORT
               ASSIGN TO UT-S-ST4RPT.

            SELECT TRANS-FILE
               ASSIGN TO TRANS
               ORGANIZATION IS LINE SEQUENTIAL.

      *
        DATA DIVISION.
      *
        FILE SECTION.
      *
        FD  STEP4-FILE.
      *
      *
        COPY A:\CS353\PACKED.CPY.
      *
        FD  STEP4-REPORT.
      *
        01  PRINT-AREA                       PIC   X(80).
      *
        FD  TRANS-FILE.
        01  TRANS-RECORD.
      *
            05  TR-NUMBER                    PIC X(4).
            05  TR-DPTION                    PIC X(16).
            05  TR-VENDOR                    PIC X(10).
            05  TR-PRICE                     PIC 9999V99.
            05  TR-QTY-SOLD                  PIC 999.
            05  TR-QTY-REC                   PIC 999.
            05  TR-ROP                       PIC 99.
            05  TR-SPACE2                    PIC X(6).
            05  TR-ACTION                    PIC X.

        WORKING-STORAGE SECTION.
      *
        01  WS-STATUS.
            05  STNAME                       PIC XX.
      *
        01  WS-INPUT-OUTPUT-INFO.
            05  STEP4                        PIC X(19)  VALUE
                "A:\cs353\jwjwjw.dat".
            05  UT-S-ST4RPT                  PIC X(19)  VALUE
                "A:\CS353\ST4OUT.DAT".
            05  TRANS                        PIC X(22)  VALUE
                "A:\cs353\TRANSFILE.DAT".
      *
       01   WS-CONSTANTS.
      *
            05  WC-EXCEED                    PIC 9(5).
      *       
       01   WS-SWITCHES.
      *
            05  WS-EOF-SW                    PIC X(3)   VALUE 'NO '.
      *
        01  WS-DATE.
      *
            05  WD-YY                        PIC 99.
            05  WD-MM                        PIC 99.
            05  WD-DD                        PIC 99.
      *
       01  WS-ACCUMULATORS.
      *
           05  WA-GOOD-RECORDS               PIC 99.
      *
       01  WS-FIELDS.
      *
           05  WF-PAGE-NUMBER           PIC 99.
      *
       01  HDG-1.
           05  HDG-DATE.
               10  HD-MM                PIC 99.
               10                       PIC X     VALUE '/'.
               10  HD-DD                PIC 99.
               10                       PIC X     VALUE '/'.
               10                       PIC 99    VALUE 20.
               10  HD-YY                PIC 99.
           05                           PIC X(17) VALUE SPACES.
           05                           PIC X(24) VALUE
                 "A C T I O N  R E P O R T".
           05                           PIC X(19) VALUE SPACES.
           05                           PIC X(5)  VALUE 'PAGE '.
           05  HDG-PAGE-NUMBER          PIC ZZ.
      *
       01  HDG-2.
           05                           PIC X     VALUE SPACES.
           05				PIC X(11) VALUE "ITEM NUMBER".
           05                           PIC XX    VALUE SPACES.
           05                           PIC X(12)
                                                  VALUE "ACTION TAKEN".
       
       01  DETAIL-LINE.
      
           05   FILLER                  PIC X(4)      VALUE SPACES.
           05   ITEMNUM                 PIC X(4).
           05   FILLER                  PIC X(6)      VALUE SPACES.
           05   ACTION                  PIC X(66).
      
       01  TOTAL-LINE.
      *
           05                           PIC X(17) VALUE
               "RECORDS PRINTED: ".
           05  TL-GOOD-COUNT            PIC Z9.

       01  END-OF-JOB-LINE.
      *
           05                           PIC X(25) VALUE SPACES.
           05                           PIC X(30) VALUE
               "N O R M A L  E N D  O F  J O B".
           05                           PIC X(25) VALUE SPACES.
      *    
       PROCEDURE DIVISION.
      *
       000-MAIN-LINE-RTN.
      *
      **************************************************************
      *   THIS PARAGRAPH IS THE MAIN MODULE OF THE PROGRAM.  ALL   *
      *   PARAGRAPHS IN THE PROGRAM ARE EXECUTED UNDER THE CONTROL *
      *   OF THIS MODULE.                                          *
      **************************************************************
      *
          PERFORM 100-INIT-RTN THRU 100-INIT-RTN-EXIT
          PERFORM 300-HDG-RTN  THRU 300-HDG-RTN-EXIT
          PERFORM UNTIL WS-EOF-SW = 'YES'
               READ TRANS-FILE
                  AT END MOVE 'YES' TO WS-EOF-SW
                  NOT AT END
                  PERFORM 500-PRINT-RTN THRU
                     500-PRINT-RTN-EXIT
               END-READ
          END-PERFORM
          PERFORM 400-WRITE-TOTALS-RTN THRU 400-WRITE-TOTALS-RTN-EXIT
          CLOSE STEP4-REPORT
                STEP4-FILE
                TRANS-FILE
          STOP RUN.
      *
       100-INIT-RTN.
      *
      ***************************************************************
      *    CALLED BY 000-MAIN-LINE-RTN.  INITIALIZES VALUES.        *
      ***************************************************************
      *
          OPEN OUTPUT  STEP4-REPORT
               I-O     STEP4-FILE
               INPUT   TRANS-FILE

          INITIALIZE WS-ACCUMULATORS
                     WS-FIELDS
      *
          ACCEPT WS-DATE FROM DATE.
           MOVE WD-MM            TO      HD-MM
           MOVE WD-DD            TO      HD-DD
           MOVE WD-YY            TO      HD-YY.
      *
       100-INIT-RTN-EXIT. EXIT.
      *
       200-DETAIL-RTN.
      *
      *****************************************************
      * THIS PARAGRAPH WRITES THE REPORTLINE.             *
      * CALLED BY 500-VALID-RTN.                          *
      *****************************************************
      *
           WRITE PRINT-AREA FROM DETAIL-LINE AFTER ADVANCING 1 LINES.
      *
       200-DETAIL-RTN-EXIT. EXIT.
      *
       300-HDG-RTN.
      *
      ***********************************************************
      * THIS PARAGRAPH WRITES THE MAIN HEADING AND COLUMN       *
      * HEADINGS FOR THE PROGRAM.  CALLED BY 000-MAIN-LINE-RTN. *
      ***********************************************************
      *
           ADD 1  TO  WF-PAGE-NUMBER
           MOVE WF-PAGE-NUMBER  TO  HDG-PAGE-NUMBER
           WRITE PRINT-AREA FROM HDG-1 AFTER ADVANCING PAGE
           WRITE PRINT-AREA FROM HDG-2 AFTER ADVANCING 2 LINES.
      *
       300-HDG-RTN-EXIT. EXIT.
      *
      *
       400-WRITE-TOTALS-RTN.
      *
      ***********************************************************
      * THIS PARAGRAPH WRITES THE TOTAL RECORD COUNT AT THE END *
      * OF THE REPORT.  CALLED BY 000-MAIN-LINE-RTN.            *
      ***********************************************************
      *
           MOVE WA-GOOD-RECORDS TO TL-GOOD-COUNT
           WRITE PRINT-AREA FROM TOTAL-LINE AFTER ADVANCING 2 LINES
           MOVE SPACES TO PRINT-AREA
           WRITE PRINT-AREA AFTER ADVANCING 2 LINES
           WRITE PRINT-AREA FROM END-OF-JOB-LINE
              AFTER ADVANCING 1 LINES.
      *
       400-WRITE-TOTALS-RTN-EXIT. EXIT.
      *
       500-PRINT-RTN.
      *****************************************************************
      * THIS PARAGRAPH CHECKS THE RECORDS, AND IF THE REORDER POINT IS
      * LESS THAN 80, IT CALLS THE 200-DETAIL-RTN.
      *****************************************************************

          MOVE TR-NUMBER   TO  MR-NUMBER

          READ STEP4-FILE
             IF STNAME = '00'
               PERFORM 700-C-D-RTN THRU 700-C-D-RTN-EXIT
             ELSE
               IF STNAME = '23'
               PERFORM 600-ADD-RTN THRU 600-ADD-RTN-EXIT
             END-IF.
      *
       500-PRINT-RTN-EXIT. EXIT.

       600-ADD-RTN.
      *****************************************************************
      *
      *****************************************************************

           EVALUATE TR-ACTION
               WHEN 'A'
                  MOVE TR-NUMBER           TO MR-NUMBER
                  MOVE TR-DPTION           TO MR-DESCR
                  MOVE TR-PRICE            TO MR-PRICE
                  MOVE TR-VENDOR           TO MR-VENDOR
                  MOVE TR-QTY-SOLD         TO MR-QTY-ON-ORDER
                  MOVE TR-QTY-REC          TO MR-QTY-ON-HAND
                  MOVE TR-ROP              TO MR-ROP
                  MOVE TR-QTY-SOLD         TO MR-YTD-SOLD
                  MOVE TR-NUMBER           TO ITEMNUM
                  MOVE "RECORD WAS ADDED"  TO ACTION
                  WRITE MASTER-RECORD
                  PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
                  ADD 1 TO WA-GOOD-RECORDS

               WHEN 'C'
                  MOVE TR-NUMBER           TO ITEMNUM
                  MOVE "CANNOT CHANGE NONEXISTING RECORD" TO ACTION
                  PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
                  ADD 1 TO WA-GOOD-RECORDS
               WHEN 'D'
                  MOVE TR-NUMBER           TO ITEMNUM
                  MOVE "CANNOT DELETE NONEXISTING RECORD" TO ACTION
                  PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
               WHEN OTHER
                  MOVE "ERROR IN ACTION CODE" TO ACTION
                  MOVE TR-NUMBER              TO ITEMNUM
                  PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
                  ADD 1 TO WA-GOOD-RECORDS
           END-EVALUATE.

       600-ADD-RTN-EXIT. EXIT.
      *
       700-C-D-RTN.

           EVALUATE TR-ACTION
               WHEN 'C'
                IF TR-QTY-SOLD NOT ZEROS
                 MOVE TR-QTY-SOLD          TO MR-QTY-ON-ORDER
                END-IF
                IF TR-QTY-REC NOT ZEROS
                 MOVE TR-QTY-REC           TO MR-QTY-ON-HAND
                END-IF
                IF TR-VENDOR NOT EQUAL TO SPACES
                 MOVE TR-VENDOR            TO MR-VENDOR
                END-IF
                IF TR-QTY-SOLD NOT ZEROS
                 ADD  TR-QTY-SOLD          TO MR-YTD-SOLD
                END-IF
                 MOVE TR-NUMBER            TO ITEMNUM

                 MOVE "RECORD WAS CHANGED" TO ACTION
                 REWRITE MASTER-RECORD
                 PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
                 ADD 1 TO WA-GOOD-RECORDS


               WHEN 'D'
                 DELETE STEP4-FILE
                 MOVE TR-NUMBER            TO ITEMNUM
                 MOVE "RECORD WAS DELETED" TO ACTION
                 PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
                 ADD 1 TO WA-GOOD-RECORDS

               WHEN 'A'
                  MOVE TR-NUMBER            TO ITEMNUM
                  MOVE "CANNOT ADD ALREADY EXISTING RECORD" TO ACTION
                  PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
                  ADD 1 TO WA-GOOD-RECORDS

               WHEN OTHER
                  MOVE TR-NUMBER            TO ITEMNUM
                  MOVE "ERROR IN ACTION CODE"  TO ACTION
                  PERFORM 200-DETAIL-RTN THRU 200-DETAIL-RTN-EXIT
                  ADD 1 TO WA-GOOD-RECORDS

           END-EVALUATE.

       700-C-D-RTN-EXIT. EXIT.