OPEN I-O MASTER-FILE
MOVE SPACES TO MASTER-SWITCH
PERFORM UNTIL MASTER-SWITCH
= 'EOF'
READ MASTER-FILE
AT END MOVE 'EOF' TO MASTER-SWITCH
NOT AT END
ADD 10 TO MASTER-VALUE
REWRITE MASTER-RECORD
END-READ
END-PERFORM
CLOSE MASTER-FILE
------------------------------------------------------------------------------------------------------------------------------
When using REWRITE the programmer must make provisions for
then outputs a new
master.
--------------------------------------------------------------------------------
Steps for creating a new master file from and old master and
transactions.
CHANGE or DELETE a record that does not exist in the master file
Apply transaction data that has error in the input fields.
If transaction-key > old-master-key,
means that there
is no corresponding change requested for the current record
therefore
write the new-master-record from the old-master-record
and read another old-master-record
If transaction-key < old-master-key,
means either of two
things
if the application
allows new records with keys smaller than existing keys,
then
process a transaction record that contains information to be "added"
or
if the application
does not allow new keys smaller than existing keys,
then
process an erroneous transaction.
If no-more-masters and more-transactions
means all the remaining
transactions are additions or changes to additions
therefore
apply add, change and delete to all records coming from the transaction
file
until there are no-more-transactions
If no-more-transactions and more-masters,
means there are masters
that have to be copied from the old-master to the new-master
therefore,
copy the old master records to the new master file
---------------------------------------------------------------------------------------
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. UPDATES.
000300 AUTHOR. JOHN H PETLICKI.
000400 ENVIRONMENT DIVISION.
000500 INPUT-OUTPUT SECTION.
000600 FILE-CONTROL.
000700 SELECT OLD-MASTER ASSIGN TO OLDMAST.
000800 SELECT NEW-MASTER ASSIGN TO NEWMAST.
000900 SELECT TRANSACTIONS ASSIGN TO
TRANS.
000910
001100 DATA DIVISION.
001200 FILE SECTION.
001300
001400 FD OLD-MASTER
001500 DATA RECORD IS OLD-MASTER-REC.
001600 01 OLD-MASTER-REC.
001700 05 OLD-MASTER-ID
PIC XX.
001800 05 OLD-MASTER-VALUE
PIC 9(3)V99.
001900
002000 FD NEW-MASTER
002100 DATA RECORD IS NEW-MASTER-REC.
002200 01 NEW-MASTER-REC.
002300 05 NEW-MASTER-ID
PIC XX.
002400 05 NEW-MASTER-VALUE
PIC 9(3)V99.
002500
002600 FD TRANSACTIONS
002700 DATA RECORD IS TRANS-REC.
002800 01 TRANS-REC.
002900 05 TRANS-ID
PIC XX.
003000 05 TRANS-VALUE
PIC 9(3)V99.
003100 05 TRANS-TYPE
PIC X.
003200 88
VALID-TRANS-TYPE VALUES ARE 'A' 'C' 'D'.
003300 88
ADD-TRANS VALUE IS 'A'.
003400 88
CHANGE-TRANS VALUE IS 'C'.
003500 88
DELETE-TRANS VALUE IS 'D'.
003600
003700 WORKING-STORAGE SECTION.
003800 01 MASTER-SWITCH
PIC XXX VALUE SPACES.
003900 01 TRANSACTION-SWITCH
PIC XXX VALUE SPACES.
004000 01 WS-REC.
004100 05 WS-ID
PIC XX VALUE LOW-VALUES.
004200 05 WS-VALUE
PIC S9(3)V99.
004300 01 COUNTERS.
004400 05 TOTAL-OLD-MASTERS
PIC 9(5) VALUE ZEROS.
004500 05 TOTAL-NEW-MASTERS
PIC 9(5) VALUE ZEROS.
004600 05 TOTAL-MASTERS-ADDED
PIC 9(5) VALUE ZEROS.
004700 05 TOTAL-MASTERS-DELETED
PIC 9(5) VALUE ZEROS.
004800
004900 05 TOTAL-TRANS-ENTERED
PIC 9(5) VALUE ZEROS.
005000 05 TOTAL-ADDS-ENTERED
PIC 9(5) VALUE ZEROS.
005100 05 TOTAL-CHANGES-ENTERED
PIC 9(5) VALUE ZEROS.
005200 05 TOTAL-DELETES-ENTERED
PIC 9(5) VALUE ZEROS.
005300 05 TOTAL-OTHER-ENTERED
PIC 9(5) VALUE ZEROS.
005400
005500 05 TOTAL-TRANS-APPLIED
PIC 9(5) VALUE ZEROS.
005600 05 TOTAL-ADDS-APPLIED
PIC 9(5) VALUE ZEROS.
005700 05 TOTAL-CHANGES-APPLIED
PIC 9(5) VALUE ZEROS.
005800 05 TOTAL-DELETES-APPLIED
PIC 9(5) VALUE ZEROS.
005900 05 TOTAL-OTHER-APPLIED
PIC 9(5) VALUE ZEROS.
006000
006100 05 TOTAL-TRANS-REJECTED
PIC 9(5) VALUE ZEROS.
006200 05 TOTAL-ADDS-REJECTED
PIC 9(5) VALUE ZEROS.
006300 05 TOTAL-CHANGES-REJECTED
PIC 9(5) VALUE ZEROS.
006400 05 TOTAL-DELETES-REJECTED
PIC 9(5) VALUE ZEROS.
006500 05 TOTAL-OTHER-REJECTED
PIC 9(5) VALUE ZEROS.
006600
006700 PROCEDURE DIVISION.
006800 OPEN INPUT OLD-MASTER
006900
TRANSACTIONS
007000
OUTPUT NEW-MASTER
007100 MOVE LOW-VALUES TO WS-REC
007200 PERFORM 900-READ-TRANS
007300 PERFORM 910-READ-OLD-MASTER
007400 PERFORM 200-PROCESS-TRANS-AND-MASTERS
007500
UNTIL MASTER-SWITCH = 'EOF'
007600
AND TRANSACTION-SWITCH = 'EOF'
007700 PERFORM 610-WRITE-IF-WS-REC-VALID
007800
007900 CLOSE OLD-MASTER
008000
TRANSACTIONS
008100
NEW-MASTER.
008200 GOBACK.
008300
008400 200-PROCESS-TRANS-AND-MASTERS.
008500 EVALUATE TRUE
008600 WHEN MASTER-SWITCH = 'EOF'
008700
PERFORM 300-CHECK-TRANSACTIONS
008800 WHEN TRANSACTION-SWITCH = 'EOF'
008900
PERFORM 640-COPY-OLD-TO-NEW
009000 WHEN OTHER
009100
PERFORM 500-COMPARE-TRAN-TO-MASTER
009200 END-EVALUATE.
009300
009400 300-CHECK-TRANSACTIONS.
009500 IF TRANS-ID = WS-ID
009600 PERFORM
600-CHANGE-TRANSACTION
009700 ELSE
009800 PERFORM
610-WRITE-IF-WS-REC-VALID
009900 PERFORM
620-ADD-TRANSACTION
010000 END-IF
010100 PERFORM 900-READ-TRANS.
010200
010900 500-COMPARE-TRAN-TO-MASTER.
011000 EVALUATE TRUE
011100 WHEN TRANS-ID < OLD-MASTER-ID
011200
PERFORM 300-CHECK-TRANSACTIONS
011300 WHEN TRANS-ID = OLD-MASTER-ID
011400
PERFORM 630-UPDATE-MASTER
011500 WHEN OTHER
011600
PERFORM 640-COPY-OLD-TO-NEW
011700 END-EVALUATE.
011800
011900 600-CHANGE-TRANSACTION.
012000 EVALUATE TRUE
012100 WHEN CHANGE-TRANS
012200
EVALUATE TRUE
012300
WHEN TRANS-VALUE NUMERIC
012400
ADD TRANS-VALUE TO WS-VALUE
012500
PERFORM 650-TALLY-TRANS-APPLIED
012600
WHEN OTHER
012700
PERFORM 850-DISPLAY-INVALID-TRANS
012800
PERFORM 660-TALLY-TRANS-REJECTED
012900
END-EVALUATE
013000 WHEN DELETE-TRANS
013100
MOVE LOW-VALUES TO WS-REC
013200
PERFORM 650-TALLY-TRANS-APPLIED
013300 WHEN OTHER
013400
PERFORM 850-DISPLAY-INVALID-TRANS
013500
PERFORM 660-TALLY-TRANS-REJECTED
013600 END-EVALUATE.
013700
013800 610-WRITE-IF-WS-REC-VALID.
013900 IF WS-REC > LOW-VALUES
014000 WRITE
NEW-MASTER-REC FROM WS-REC
014100 ADD 1
TO TOTAL-NEW-MASTERS
014200 MOVE
LOW-VALUES TO WS-REC
014300 END-IF.
014400
014500 620-ADD-TRANSACTION.
014600 EVALUATE TRUE
014700 WHEN ADD-TRANS
014800
IF TRANS-VALUE NUMERIC
014900
MOVE TRANS-REC TO WS-REC
015000
PERFORM 650-TALLY-TRANS-APPLIED
015100
ELSE
015200
MOVE LOW-VALUES TO WS-REC
015300
PERFORM 850-DISPLAY-INVALID-TRANS
015400
PERFORM 660-TALLY-TRANS-REJECTED
015500
END-IF
015600 WHEN OTHER
015700
PERFORM 850-DISPLAY-INVALID-TRANS
015800
MOVE LOW-VALUES TO WS-REC
015900
PERFORM 660-TALLY-TRANS-REJECTED
016000 END-EVALUATE.
016100
016300 630-UPDATE-MASTER.
016400 PERFORM 610-WRITE-IF-WS-REC-VALID
016500 MOVE OLD-MASTER-REC
TO WS-REC
016600 PERFORM 600-CHANGE-TRANSACTION
016700 PERFORM 900-READ-TRANS
016800 PERFORM 910-READ-OLD-MASTER.
016900
017000 640-COPY-OLD-TO-NEW.
017100 PERFORM 610-WRITE-IF-WS-REC-VALID
017200 WRITE NEW-MASTER-REC
FROM OLD-MASTER-REC
017300 ADD 1 TO TOTAL-NEW-MASTERS
017400 PERFORM 910-READ-OLD-MASTER.
017500
017600 650-TALLY-TRANS-APPLIED.
017700 ADD 1 TO TOTAL-TRANS-APPLIED
017800 EVALUATE TRUE
017900 WHEN
ADD-TRANS ADD 1 TO TOTAL-ADDS-APPLIED
018000
TOTAL-MASTERS-ADDED
018100 WHEN
CHANGE-TRANS ADD 1 TO TOTAL-CHANGES-APPLIED
018200 WHEN
DELETE-TRANS ADD 1 TO TOTAL-DELETES-APPLIED
018300
TOTAL-MASTERS-DELETED
018400 WHEN
OTHER ADD 1 TO TOTAL-OTHER-APPLIED
018500 END-EVALUATE.
018600
018700 660-TALLY-TRANS-REJECTED.
018800 ADD 1 TO TOTAL-TRANS-REJECTED
018900 EVALUATE TRUE
019000 WHEN
ADD-TRANS ADD 1 TO TOTAL-ADDS-REJECTED
019100 WHEN
CHANGE-TRANS ADD 1 TO TOTAL-CHANGES-REJECTED
019200 WHEN
DELETE-TRANS ADD 1 TO TOTAL-DELETES-REJECTED
019300 WHEN
OTHER ADD 1 TO TOTAL-OTHER-REJECTED
019400 END-EVALUATE.
019500
019700 850-DISPLAY-INVALID-TRANS.
019800 DISPLAY 'INVALID TRANSACTION
' TRANS-REC.
019900
020000 900-READ-TRANS.
020100 READ TRANSACTIONS
020200 AT END MOVE "EOF"
TO TRANSACTION-SWITCH
020300 NOT AT END
020400 ADD 1
TO TOTAL-TRANS-ENTERED
020500 EVALUATE
TRUE
020600
WHEN ADD-TRANS ADD 1 TO TOTAL-ADDS-ENTERED
020700
WHEN CHANGE-TRANS ADD 1 TO TOTAL-CHANGES-ENTERED
020800
WHEN DELETE-TRANS ADD 1 TO TOTAL-DELETES-ENTERED
020900
WHEN OTHER ADD 1 TO TOTAL-OTHER-ENTERED
020910 END-EVALUATE
021000 END-READ.
021100
021200 910-READ-OLD-MASTER.
021300 READ OLD-MASTER
021400
AT END MOVE "EOF" TO MASTER-SWITCH
021500
NOT AT END ADD 1 TO TOTAL-OLD-MASTERS
021600 END-READ.
021700
--------------------------------------------------------------------------------------