IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. AUTHOR. NANCY STERN. **************************************************************** * the program updates a master file with a coded transaction * * file, comments are printed with lowercase letters to * * distinguish them from instructions * **************************************************************** *** This program has no date procedures - it is Y2K compliant ** ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-OLD-MASTER ASSIGN TO DATA13O. SELECT IN-TRANSACTION ASSIGN TO DATA13T. SELECT OUT-NEW-MASTER ASSIGN TO DATA13N. DATA DIVISION. FILE SECTION. FD IN-OLD-MASTER LABEL RECORDS ARE STANDARD. 01 IN-OLD-REC. 05 IN-OLD-PART-NO PIC X(5). 05 IN-OLD-QTY-ON-HAND PIC S9(5). FD IN-TRANSACTION LABEL RECORDS ARE STANDARD. 01 IN-TRANS-REC. 05 IN-TRANS-PART-NO PIC X(5). 05 IN-TRANS-QTY PIC 9(5). 05 IN-TRANS-CODE PIC 9. 88 DELETE-THE-RECORD VALUE 1. 88 ADD-THE-RECORD VALUE 2. 88 UPDATE-THE-RECORD VALUE 3. FD OUT-NEW-MASTER LABEL RECORDS ARE STANDARD. 01 OUT-NEW-REC. 05 OUT-MAS-PART-NO PIC X(5). 05 OUT-MAS-QTY-ON-HAND PIC S9(5). * PROCEDURE DIVISION. *********************************************** * controls the direction of program logic. * *********************************************** 100-MAIN-MODULE. PERFORM 1000-INITIALIZATION-RTN PERFORM 200-UPDATE-RTN UNTIL IN-OLD-PART-NO = HIGH-VALUES AND IN-TRANS-PART-NO = HIGH-VALUES PERFORM 1100-END-OF-JOB-RTN STOP RUN. ************************************************************* * performed from 100-main-module. determines input record * * processing path by comparing the master and transaction * * part numbers. * ************************************************************* 200-UPDATE-RTN. EVALUATE TRUE WHEN IN-OLD-PART-NO = IN-TRANS-PART-NO PERFORM 300-UPDATE-TEST WHEN IN-OLD-PART-NO > IN-TRANS-PART-NO PERFORM 400-ADD-RTN WHEN OTHER PERFORM 500-WRITE-OLD-REC END-EVALUATE. **************************************************************** * performed from 200-update-rtn, determines transaction code * * and performs appropriate action. * **************************************************************** 300-UPDATE-TEST. EVALUATE TRUE WHEN DELETE-THE-RECORD CONTINUE WHEN ADD-THE-RECORD PERFORM 600-ERROR-RTN WHEN OTHER PERFORM 700-UPDATE-THE-RECORD END-EVALUATE PERFORM 800-READ-MASTER PERFORM 900-READ-TRANS. *********************************************************** * performed from 200-update-rtn, adds new transaction to * * master file, reads next transaction record. * *********************************************************** 400-ADD-RTN. IF ADD-THE-RECORD MOVE IN-TRANS-PART-NO TO OUT-MAS-PART-NO MOVE IN-TRANS-QTY TO OUT-MAS-QTY-ON-HAND WRITE OUT-NEW-REC ELSE DISPLAY 'ERROR IN CODE, SHOULD BE EQUAL TO 2 ', IN-TRANS-PART-NO END-IF PERFORM 900-READ-TRANS. ******************************************************** * performed from 200-update-rtn and 300-update-test, * * writes old master record to new master file. * ******************************************************** 500-WRITE-OLD-REC. MOVE IN-OLD-PART-NO TO OUT-MAS-PART-NO MOVE IN-OLD-QTY-ON-HAND TO OUT-MAS-QTY-ON-HAND WRITE OUT-NEW-REC PERFORM 800-READ-MASTER. ************************************************************ * performed from 300-update-test, displays error message * ************************************************************ 600-ERROR-RTN. DISPLAY 'ERROR IN CODE, SHOULD NOT EQUAL 2 ', IN-TRANS-PART-NO. ****************************************************************** * performed from 300-update-test, updates transaction record with* *master record, displays a message if a quantity error occurs. * ****************************************************************** 700-UPDATE-THE-RECORD. MOVE IN-TRANS-PART-NO TO OUT-MAS-PART-NO COMPUTE OUT-MAS-QTY-ON-HAND = IN-OLD-QTY-ON-HAND - IN-TRANS-QTY WRITE OUT-NEW-REC IF OUT-MAS-QTY-ON-HAND IS LESS THAN ZERO DISPLAY 'REORDER, QUANTITY FELL BELOW ZERO' DISPLAY 'PART NUMBER ', OUT-MAS-PART-NO END-IF. ******************************************************* * performed from 300-update-test, 500-write-old-rec, * * 1000-initialization-rtn. reads master file * ******************************************************* 800-READ-MASTER. READ IN-OLD-MASTER AT END MOVE HIGH-VALUES TO IN-OLD-PART-NO END-READ. ***************************************************** * performed from 300-update-test, 400-add-rtn, * * 1000-initialization-rtn. reads transaction file * ***************************************************** 900-READ-TRANS. READ IN-TRANSACTION AT END MOVE HIGH-VALUES TO IN-TRANS-PART-NO END-READ. ****************************************************************** * performed from 100-main-module, opens files * ******************************************************************* 1000-INITIALIZATION-RTN. OPEN INPUT IN-OLD-MASTER IN-TRANSACTION OUTPUT OUT-NEW-MASTER PERFORM 800-READ-MASTER PERFORM 900-READ-TRANS. ******************************************************* * performed from 100-main-module, closes files * ******************************************************* 1100-END-OF-JOB-RTN. CLOSE IN-OLD-MASTER IN-TRANSACTION OUT-NEW-MASTER.