IDENTIFICATION DIVISION. PROGRAM-ID. STEP1. AUTHOR. JUSTIN ANDERSON, JONAS WIK, BRAD ROUDEBUSH,OMID KARBASSI DATE-WRITTEN. 02/04/2002. DATE-COMPILED. * ****************************************************************** * * * CUSTOMER REPORT * * * * PURPOSE: THIS PROGRAM READS DATA FROM DATA FILE AND CHECKS FOR * * DATA VALIDITY. VALID DATA IS SENT TO THE MASTER FILE * * WHILE INVALID DATA IS SENT TO THE ERROR REPORT. * * * * INPUT: * * FIELD COLS. TYPE * * CR-NUMBER 1-4 AN * * CR-DESCR 5-20 AN * * CR-VENDOR 21-30 AN * * CR-PRICE 31-36 AN * * CR-QTY-ON-HAND 37-39 N * * CR-QTY-ON-ORDER 40-42 N * * CR-ROP 43-44 N * * CR-YTD-SOLD 46-50 N * * * * OUTPUT: * * FIELD PRINT POSITION * * MR-NUMBER 1-4 AN * * MR-DESCR 5-20 AN * * MR-VENDOR 21-30 AN * * MR-PRICE 31-36 AN * * MR-QTY-ON-HAND 37-39 N * * MR-QTY-ON-ORDER 40-42 N * * MR-ROP 43-44 N * * MR-YTD-SOLD 46-50 N * * * * ER-ITEMNUM 2 * * ER-MSG 15 * * * * AT THE END OF THE ERROR REPORT THE TOTAL INVALID RECORDS* * IS PRINTED. * * * * DUE DATE: 02/06/2002 * * * ****************************************************************** * ENVIRONMENT DIVISION. * CONFIGURATION SECTION. * INPUT-OUTPUT SECTION. * FILE-CONTROL. SELECT STEP1-FILE ASSIGN TO STEP1 ORGANIZATION IS LINE SEQUENTIAL. * SELECT MASTER-FILE ASSIGN TO MASTER. * SELECT ERROR-REPORT ASSIGN TO UT-S-ERREPT. * DATA DIVISION. * FILE SECTION. * FD STEP1-FILE. * COPY A:\CS353\RECORD.CPY. * FD MASTER-FILE. * 01 MASTER-AREA PIC X(43). * COPY A:\CS353\PACKED.CPY. * FD ERROR-REPORT. * 01 ER-PRINT-AREA PIC X(80). * WORKING-STORAGE SECTION. * 01 WS-INPUT-OUTPUT-INFO. 05 STEP1 PIC X(18) VALUE "A:\CS353\STEP1.DAT". 05 MASTER PIC X(19) VALUE "A:\CS353\MASTER.DAT". 05 UT-S-ERREPT PIC X(22) VALUE "A:\CS353\ERRORREPT.DAT". * 01 WS-CONSTANTS. * 05 WC-EXCEED PIC 9(5). * 01 WS-SWITCHES. * 05 WS-DATA-SW PIC X(3) VALUE 'NO '. 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. 05 WA-ERROR-COUNT PIC 999. * 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(19) VALUE SPACES. 05 PIC X(22) VALUE "E R R O R R E P O R T". 05 PIC X(22) 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 X(2) VALUE SPACES. 05 PIC X(18) VALUE "RECORD DESCRIPTION". 05 PIC X(48) VALUE SPACES. 01 ERROR-LINE. 05 FILLER PIC X(4) VALUE SPACES. 05 ITEMNUM PIC X(4). 05 FILLER PIC XX VALUE SPACES. 05 DESCR PIC X(70). 01 TOTAL-LINE. * 05 PIC X(15) VALUE "VALID RECORDS: ". 05 TL-GOOD-COUNT PIC Z9. 05 FILLER PIC X(3) VALUE SPACES. 05 PIC X(17) VALUE "INVALID RECORDS: ". 05 TL-ERROR-COUNT PIC ZZ9. 05 PIC X(40) VALUE SPACES. * 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 STEP1-FILE AT END MOVE 'YES' TO WS-EOF-SW NOT AT END PERFORM 500-VALID-RTN THRU 500-VALID-RTN-EXIT END-READ END-PERFORM PERFORM 400-WRITE-TOTALS-RTN THRU 400-WRITE-TOTALS-RTN-EXIT CLOSE ERROR-REPORT MASTER-FILE STEP1-FILE STOP RUN. * 100-INIT-RTN. * *************************************************************** * CALLED BY 000-MAIN-LINE-RTN. INITIALIZES VALUES. * *************************************************************** * OPEN INPUT STEP1-FILE OUTPUT MASTER-FILE OUTPUT ERROR-REPORT * 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-ERROR-RTN. * ***************************************************** * THIS PARAGRAPH WRITES THE ERROR LINE. AT THE END * * OF THE PROCEDURE THE ERROR LINE FIELDS ARE RE- * * INITIALIZED. CALLED BY 500-VALID-RTN. * ***************************************************** * WRITE ER-PRINT-AREA FROM ERROR-LINE AFTER ADVANCING 1 LINES MOVE SPACES TO ITEMNUM MOVE SPACES TO DESCR. * 200-ERROR-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 ER-PRINT-AREA FROM HDG-1 AFTER ADVANCING PAGE WRITE ER-PRINT-AREA FROM HDG-2 AFTER ADVANCING 2 LINES. * 300-HDG-RTN-EXIT. EXIT. * * 400-WRITE-TOTALS-RTN. * *********************************************************** * THIS PARAGRAPH WRITES THE TOTAL ERROR COUNT AT THE END * * OF THE PROGRAM. CALLED BY 000-MAIN-LINE-RTN. * *********************************************************** * MOVE WA-GOOD-RECORDS TO TL-GOOD-COUNT MOVE WA-ERROR-COUNT TO TL-ERROR-COUNT WRITE ER-PRINT-AREA FROM TOTAL-LINE AFTER ADVANCING 2 LINES MOVE SPACES TO ER-PRINT-AREA WRITE ER-PRINT-AREA AFTER ADVANCING 2 LINES WRITE ER-PRINT-AREA FROM END-OF-JOB-LINE AFTER ADVANCING 1 LINES. * 400-WRITE-TOTALS-RTN-EXIT. EXIT. * 500-VALID-RTN. ***************************************************************** * THIS PARAGRAPH CHECKS THE VALIDITY THAT... * * 1. ALL NUMERIC FIELDS THAT THEY ARE NUMERIC. * * 2. UNIT PRICE MUST BE $47.50 - $1542.90 INCLUSIVE * * 3. QUANTITY ON ORDER CANNOT EXCEED 525 * * 4. REORDER POINT CANNOT BE LESS THAN 75 * * 5. DO THE PRESENCE TEST FOR ITEM NUMBER * * 6. DO ABSENCE TEST FOR ITEM NUMBER * ***************************************************************** IF CR-NUMBER = ' ' MOVE CR-NUMBER TO ITEMNUM MOVE "ITEM NOT PRESENT" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-PRICE NOT NUMERIC MOVE CR-NUMBER TO ITEMNUM MOVE "UNIT PRICE IS NOT NUMERIC" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-PRICE < 47.50 OR CR-PRICE > 1542.90 MOVE CR-NUMBER TO ITEMNUM MOVE "UNIT PRICE IS OUT OF RANGE" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-QTY-ON-HAND NOT NUMERIC MOVE CR-NUMBER TO ITEMNUM MOVE "QUANTITY ON HAND IS NOT NUMERIC" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-QTY-ON-ORDER NOT NUMERIC MOVE CR-NUMBER TO ITEMNUM MOVE "QUANTITY ON ORDER IS NOT NUMERIC" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-QTY-ON-ORDER > 525 MOVE CR-NUMBER TO ITEMNUM MOVE "QUANTITY ON ORDER IS TOO LARGE" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-ROP NOT NUMERIC MOVE CR-NUMBER TO ITEMNUM MOVE "REORDER POINT IS NOT NUMERIC" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-ROP < 75 MOVE CR-NUMBER TO ITEMNUM MOVE "REORDER POINT IS TOO SMALL" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF CR-YTD-SOLD NOT NUMERIC MOVE CR-NUMBER TO ITEMNUM MOVE "YEAR TO DATE SOLD IS NOT NUMERIC" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF BLANKSPACE <> ' ' MOVE CR-NUMBER TO ITEMNUM MOVE "INPUT COLUMN 45 ISN'T EMPTY" TO DESCR MOVE 'YES' TO WS-DATA-SW PERFORM 200-ERROR-RTN THRU 200-ERROR-RTN-EXIT END-IF IF WS-DATA-SW = 'NO ' PERFORM 600-MOVE-WRITE-DATA-RTN THRU 600-MOVE-WRITE-DATA-RTN-EXIT ELSE ADD 1 TO WA-ERROR-COUNT END-IF MOVE 'NO ' TO WS-DATA-SW. * 500-VALID-RTN-EXIT. EXIT. * 600-MOVE-WRITE-DATA-RTN. * ****************************************************************** * THIS METHOD WRITES ALL VALID RECORDS ON TO THE MASTER FILE. * * THE METHOD WILL BE CALLED BY 500-VALID-RTN. * ****************************************************************** * MOVE CR-NUMBER TO MR-NUMBER MOVE CR-DESCR TO MR-DESCR MOVE CR-VENDOR TO MR-VENDOR MOVE CR-PRICE TO MR-PRICE MOVE CR-QTY-ON-HAND TO MR-QTY-ON-HAND MOVE CR-QTY-ON-ORDER TO MR-QTY-ON-ORDER MOVE CR-ROP TO MR-ROP MOVE CR-YTD-SOLD TO MR-YTD-SOLD WRITE MASTER-AREA FROM MASTER-RECORD. ADD 1 TO WA-GOOD-RECORDS. * 600-MOVE-WRITE-DATA-RTN-EXIT. EXIT. *