💻 COBOL
COBOL REWRITE Statement
Intermediate 🕑 10 min read
👁 0 views
COBOL REWRITE Statement
The REWRITE statement updates an existing record in a file opened for I-O.
Syntax
REWRITE record-name [FROM identifier]
[INVALID KEY imperative-statement]
[NOT INVALID KEY imperative-statement]
[END-REWRITE]
Example Program
IDENTIFICATION DIVISION.
PROGRAM-ID. REWRITE-DEMO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMP-FILE ASSIGN TO 'EMPLOYEE.DAT'
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS EMP-ID
FILE STATUS IS WS-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD EMP-FILE.
01 EMP-RECORD.
05 EMP-ID PIC 9(5).
05 EMP-NAME PIC X(30).
05 EMP-SALARY PIC 9(7)V99.
WORKING-STORAGE SECTION.
01 WS-FILE-STATUS PIC XX.
01 WS-NEW-SALARY PIC 9(7)V99.
PROCEDURE DIVISION.
OPEN I-O EMP-FILE
IF WS-FILE-STATUS NOT = '00'
DISPLAY 'Error opening file: ' WS-FILE-STATUS
STOP RUN
END-IF
* Read record to update
MOVE 00001 TO EMP-ID
READ EMP-FILE
INVALID KEY
DISPLAY 'Record not found'
STOP RUN
END-READ
DISPLAY 'Current salary: ' EMP-SALARY
* Update salary (10% raise)
COMPUTE EMP-SALARY = EMP-SALARY * 1.10
DISPLAY 'New salary: ' EMP-SALARY
* Rewrite the record
REWRITE EMP-RECORD
INVALID KEY
DISPLAY 'Error updating record'
NOT INVALID KEY
DISPLAY 'Record updated successfully'
END-REWRITE
CLOSE EMP-FILE
STOP RUN.
Expected Output
Current salary: 0055000.00
New salary: 0060500.00
Record updated successfully
Key Points
- File must be opened I-O
- Must READ before REWRITE (sequential)
- Record length cannot change
- INVALID KEY for indexed/relative files