KSDS Write and Rewrite
Problem Description
Add new records and update existing records in KSDS.
Expected Output
WRITE for new records, REWRITE for updates
Hints
Use I-O mode for both read and write operations.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. VSAMUPD.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT VSAM-FILE ASSIGN TO VSAMFILE
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS VS-KEY
FILE STATUS IS WS-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD VSAM-FILE.
01 VS-RECORD.
05 VS-KEY PIC X(10).
05 VS-NAME PIC X(30).
05 VS-BALANCE PIC S9(7)V99.
WORKING-STORAGE SECTION.
01 WS-FILE-STATUS PIC XX.
01 WS-AMOUNT PIC S9(7)V99.
PROCEDURE DIVISION.
OPEN I-O VSAM-FILE.
* Add new record
MOVE "ACCT001" TO VS-KEY.
MOVE "NEW CUSTOMER" TO VS-NAME.
MOVE 1000.00 TO VS-BALANCE.
WRITE VS-RECORD
INVALID KEY
DISPLAY "DUPLICATE KEY - RECORD EXISTS"
NOT INVALID KEY
DISPLAY "RECORD ADDED"
END-WRITE.
* Update existing record
MOVE "ACCT001" TO VS-KEY.
READ VSAM-FILE
INVALID KEY
DISPLAY "RECORD NOT FOUND"
NOT INVALID KEY
ADD 500.00 TO VS-BALANCE
REWRITE VS-RECORD
INVALID KEY DISPLAY "REWRITE ERROR"
NOT INVALID KEY DISPLAY "RECORD UPDATED"
END-REWRITE
END-READ.
CLOSE VSAM-FILE.
STOP RUN.
Explanation:
WRITE adds new records. REWRITE updates after READ. OPEN I-O for both.