* INPUT FILES USED: DECATMAS.DAT ORIGINAL MASTER FILE * UPDATE.DAT CONTAINS THE RECORDS TO POST * AGAINST THE MASTER FILE * OUTPUT FILES PRODUECED DECATAS3.DAT SORTED OLD MASTER FILE * UPDATE1.DAT SORTED TRANSACTION FILE * NEWMASOUT.DAT NEW MASTER FILE * THIS PROGRAM SORTS A MASTER FILE AND TRANSACTION FILE IN * ASCENDING ORDER AND USES THE BALANCE LINE ALGORITHM TO * APPLY CHANGES TO THE MASTER FILE IF NECESSARY. IF NO CHANGES * ARE APPLIED TO AN OLD MASTER FILE RECORD THEN IT IS WRITTEN * TO THE NEW MASTER FILE. IF A CHANGE IS FOUND WHERE SOME OF * THE FIELDS CONTAIN SPACES, IT IS ASSUMED THAT THIS IS AN * * FINALLY, NO ERROR FILE WAS REQUESTED WITH THIS PROGRAM * AND THUS THE ERROR RECORD ON THE TRANSACTION FILE IS * SIMPLY SKIPPED AND THE OLD RECORD WAS PRESERVED FOR ATHLETE 539. * A COMMENTED OUT AREA HAS BEEN LEFT IN THE * PROGRAM SO THAT ONLY CERTAIN FIELDS CAN BE UPDATED IF THIS * IS THE TRUE INTENTION OF SPACES IN THE TRANSCATION FILE. * * * PROGRAMMING ENVIRONMENT: MICRO FOCUS WORKBENCH 4.0 / IDENTIFICATION DIVISION. PROGRAM-ID. ASSGN5. AUTHOR. KELLY. INSTALLATION. UWF. DATE-WRITTEN. AUGUST 6, 1999. DATE-COMPILED. AUGUST 6, 1999. / ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ORIG-OLD-MASTER-FILE ASSIGN TO 'A:\ASSGN2\DECATMAS.OUT' ORGANIZATION IS LINE SEQUENTIAL. SELECT OLD-MASTER-FILE ASSIGN TO 'A:\ASSGN2\DECATMAS3.DAT'. SELECT NEW-MASTER-FILE ASSIGN TO 'A:\ASSGN2\NEWMAS.OUT' ORGANIZATION IS LINE SEQUENTIAL. SELECT SORT1-FILE ASSIGN TO 'A:\ASSGN2\SRTDFIL1'. SELECT SORT2-FILE ASSIGN TO 'A:\ASSGN2\SRTDFIL2'. SELECT ORIG-TRANSACTION-FILE ASSIGN TO 'A:\ASSGN2\UPDATE.DAT' ORGANIZATION IS LINE SEQUENTIAL. SELECT TRANSACTION-FILE ASSIGN TO 'A:\ASSGN2\UPDATE1.DAT' ORGANIZATION IS LINE SEQUENTIAL. / DATA DIVISION. FILE SECTION. FD ORIG-OLD-MASTER-FILE. 01 MASTER-REC PIC X(71). SD SORT1-FILE. 01 SORT-MAS-REC. 03 FILLER PIC X(25). 03 ATHLETE-NUMBER-KEY-MAS PIC X(03). 03 FILLER PIC X(44). SD SORT2-FILE. 01 SORT-TRANS-REC. 03 FILLER PIC X(25). 03 ATHLETE-NUMBER-KEY-TR PIC X(03). 03 FILLER PIC X(44). FD OLD-MASTER-FILE. 01 OLD-MASTER-REC PIC X(71). FD NEW-MASTER-FILE. 01 NEW-MAST-RECORD PIC X(71). FD ORIG-TRANSACTION-FILE. 01 UPDT-REC-ORG PIC X(73). FD TRANSACTION-FILE. 01 UPDT-REC PIC X(73). WORKING-STORAGE SECTION. 01 FILLER PIC X(14) VALUE 'WS BEGINS HERE'. 01 WS-TRANS-RECORD. 05 TR-ATHLETE-NAME PIC X(22). 05 TR-SCHOOL-ID PIC X(03). 88 VALID-SCHOOL VALUES 'STA','USC','UCL','UCB','ORS','ORU' 'WAS', 'WAU'. 05 TR-ATHLETE-NUMBER PIC X(03). 05 TR-COACH-NUMBER PIC 9(03). 05 TR-100-METER-SCORE PIC 9(04). 05 TR-LONG-JUMP-SCORE PIC 9(04). 05 TR-SHOTPUT-SCORE PIC 9(04). 05 TR-HIGH-JUMP-SCORE PIC 9(04). 05 TR-400-METER-SCORE PIC 9(04). 05 TR-110-HURDLE-SCORE PIC 9(04). 05 TR-DISCUS-SCORE PIC 9(04). 05 TR-POLE-VAULT-SCORE PIC 9(04). 05 TR-JAVELIN-SCORE PIC 9(04). 05 TR-1500-METER-SCORE PIC 9(04). 05 TR-TRANSACTION-CODE PIC X. 88 ADDITION VALUE 'A'. 88 CHANGE VALUE 'C'. 88 DELETION VALUE 'D'. 05 FILLER PIC X. 01 WS-OLD-MAST-RECORD. 05 ATHLETE-NAME PIC X(22). 05 OM-SCHOOL-ID PIC X(03). 88 VALID-SCHOOL VALUES 'STA','USC','UCL','UCB','ORS','ORU' 'WAS', 'WAU'. 05 OM-ATHLETE-NUMBER PIC X(03). 05 OM-COACH-NUMBER PIC 9(03). 05 OM-100-METER-SCORE PIC 9(04). 05 OM-LONG-JUMP-SCORE PIC 9(04). 05 OM-SHOTPUT-SCORE PIC 9(04). 05 OM-HIGH-JUMP-SCORE PIC 9(04). 05 OM-400-METER-SCORE PIC 9(04). 05 OM-110-HURDLE-SCORE PIC 9(04). 05 OM-DISCUS-SCORE PIC 9(04). 05 OM-POLE-VAULT-SCORE PIC 9(04). 05 OM-JAVELIN-SCORE PIC 9(04). 05 OM-1500-METER-SCORE PIC 9(04). 01 WS-NEW-MAST-RECORD. 05 NM-ATHLETE-NAME PIC X(22). 05 NM-SCHOOL-ID PIC X(03). 88 VALID-SCHOOL VALUES 'STA','USC','UCL','UCB','ORS','ORU' 'WAS', 'WAU'. 05 NM-ATHLETE-NUMBER PIC X(03). 05 NM-COACH-NUMBER PIC 9(03). 05 NM-100-METER-SCORE PIC 9(04). 05 NM-LONG-JUMP-SCORE PIC 9(04). 05 NM-SHOTPUT-SCORE PIC 9(04). 05 NM-HIGH-JUMP-SCORE PIC 9(04). 05 NM-400-METER-SCORE PIC 9(04). 05 NM-110-HURDLE-SCORE PIC 9(04). 05 NM-DISCUS-SCORE PIC 9(04). 05 NM-POLE-VAULT-SCORE PIC 9(04). 05 NM-JAVELIN-SCORE PIC 9(04). 05 NM-1500-METER-SCORE PIC 9(04). 01 WS-BALANCE-LINE-SWITCHES. 05 WS-ACTIVE-KEY PIC X(03). 05 WS-RECORD-KEY-ALLOCATED-SWITCH PIC X(03). 01 EOF-SWITCH PIC X(03) VALUE ' NO'. / ***** PROGRAM LOGIC STARTS HERE IN THE PROCEDURE DIVISION **** PROCEDURE DIVISION. *=============================================================* * THIS FUNCTIONAL MODULE IS THE MAIN DRIVER FOR * * THE PROGRAM AND IT DIRECTS THE PROCESSING OF THE FILES * *=============================================================* 000-CONTROL-ROUTINE. PERFORM 0001-SORT-MASTER-INPUT PERFORM 0001-SORT-TRANSACTION-INPUT PERFORM 001-OPEN-FILES PERFORM 0020-READ-TRANSACTION-FILE PERFORM 0030-READ-OLD-MASTER-FILE PERFORM 0040-CHOOSE-ACTIVE-KEY PERFORM 0050-PROCESS-ACTIVE-KEY UNTIL WS-ACTIVE-KEY = HIGH-VALUES PERFORM 999-FILE-CLOSE. STOP RUN. 0001-SORT-MASTER-INPUT. *************************************************************** * SORT YOUR INPUT FILE A OR D ACCORDING TO VARIOUS KEYS * *************************************************************** SORT SORT1-FILE ON ASCENDING KEY ATHLETE-NUMBER-KEY-MAS USING ORIG-OLD-MASTER-FILE GIVING OLD-MASTER-FILE. 0001-SORT-TRANSACTION-INPUT. *************************************************************** * SORT YOUR INPUT FILE A OR D ACCORDING TO VARIOUS KEYS * *************************************************************** SORT SORT2-FILE ON ASCENDING KEY ATHLETE-NUMBER-KEY-TR USING ORIG-TRANSACTION-FILE GIVING TRANSACTION-FILE. 001-OPEN-FILES. ************************************************************** * OPEN INPUT AND OUTPUT FILES * ************************************************************** OPEN INPUT OLD-MASTER-FILE TRANSACTION-FILE OUTPUT NEW-MASTER-FILE. 0020-READ-TRANSACTION-FILE. READ TRANSACTION-FILE INTO WS-TRANS-RECORD AT END MOVE HIGH-VALUE TO TR-ATHLETE-NUMBER END-READ. 0030-READ-OLD-MASTER-FILE. READ OLD-MASTER-FILE INTO WS-OLD-MAST-RECORD AT END MOVE HIGH-VALUE TO OM-ATHLETE-NUMBER END-READ. 0040-CHOOSE-ACTIVE-KEY. IF TR-ATHLETE-NUMBER LESS THAN OM-ATHLETE-NUMBER MOVE TR-ATHLETE-NUMBER TO WS-ACTIVE-KEY ELSE MOVE OM-ATHLETE-NUMBER TO WS-ACTIVE-KEY END-IF. 0050-PROCESS-ACTIVE-KEY. IF OM-ATHLETE-NUMBER = WS-ACTIVE-KEY MOVE 'YES' TO WS-RECORD-KEY-ALLOCATED-SWITCH PERFORM 0060-BUILD-NEW-MASTER ELSE MOVE 'NO' TO WS-RECORD-KEY-ALLOCATED-SWITCH END-IF PERFORM 0070-APPLY-TRANS-TO-MASTER UNTIL WS-ACTIVE-KEY NOT EQUAL TR-ATHLETE-NUMBER. IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'YES' PERFORM 0080-WRITE-NEW-MASTER END-IF PERFORM 0040-CHOOSE-ACTIVE-KEY. 0060-BUILD-NEW-MASTER. MOVE WS-OLD-MAST-RECORD TO WS-NEW-MAST-RECORD PERFORM 0030-READ-OLD-MASTER-FILE. 0070-APPLY-TRANS-TO-MASTER. EVALUATE TRUE WHEN ADDITION PERFORM 0090-ADD-NEW-RECORD WHEN CHANGE PERFORM 0100-CORRECT-EXISTING-RECORD WHEN DELETION PERFORM 0110-DELETE-EXISTING-RECORD WHEN OTHER DISPLAY 'INVALID TRANSACTION CODE' END-EVALUATE PERFORM 0020-READ-TRANSACTION-FILE. 0080-WRITE-NEW-MASTER. WRITE NEW-MAST-RECORD FROM WS-NEW-MAST-RECORD. 0090-ADD-NEW-RECORD. IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'YES' DISPLAY 'ERROR-DUPLICATE ADDITION: 'TR-ATHLETE-NUMBER ELSE MOVE 'YES' TO WS-RECORD-KEY-ALLOCATED-SWITCH MOVE SPACES TO WS-NEW-MAST-RECORD MOVE WS-TRANS-RECORD TO WS-NEW-MAST-RECORD END-IF. 0100-CORRECT-EXISTING-RECORD. * IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'YES' OR IF TR-ATHLETE-NAME IS EQUAL TO SPACES OR TR-SCHOOL-ID IS EQUAL TO SPACES OR TR-COACH-NUMBER IS NOT NUMERIC OR TR-100-METER-SCORE IS NOT NUMERIC OR TR-LONG-JUMP-SCORE IS NOT NUMERIC OR TR-SHOTPUT-SCORE IS NOT NUMERIC OR TR-HIGH-JUMP-SCORE IS NOT NUMERIC OR TR-400-METER-SCORE IS NOT NUMERIC OR TR-110-HURDLE-SCORE IS NOT NUMERIC OR TR-DISCUS-SCORE IS NOT NUMERIC OR TR-POLE-VAULT-SCORE IS NOT NUMERIC OR TR-JAVELIN-SCORE IS NOT NUMERIC OR TR-1500-METER-SCORE IS NOT NUMERIC DISPLAY 'CHANGE ERROR FOUND' ELSE END-IF. 0110-DELETE-EXISTING-RECORD. IF WS-RECORD-KEY-ALLOCATED-SWITCH = 'YES' MOVE 'NO' TO WS-RECORD-KEY-ALLOCATED-SWITCH ELSE DISPLAY 'ERROR-NO MATCHING RECORD: ' TR-ATHLETE-NUMBER END-IF. 999-FILE-CLOSE. *==============================================================* * THIS AREA PRINTS AN END OF PROGRAM STATEMENT, CLOSES THE * * INPUT AND OUTPUT FILES AND ENDS THE PROGRAM EXECUTION * * =============================================================* CLOSE OLD-MASTER-FILE TRANSACTION-FILE NEW-MASTER-FILE. END PROGRAM ASSGN5.