Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 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