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.