Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL READ Statement

Intermediate 🕑 10 min read 👁 1 views

COBOL READ Statement

The READ statement retrieves records from a file.

Syntax

READ file-name [INTO identifier]
    [AT END imperative-statement]
    [NOT AT END imperative-statement]
[END-READ]

READ file-name KEY IS key-name [INTO identifier]
    [INVALID KEY imperative-statement]
[END-READ]

Example Program

       IDENTIFICATION DIVISION.
       PROGRAM-ID. READ-DEMO.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT EMP-FILE ASSIGN TO 'EMPLOYEE.DAT'
               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-EOF          PIC 9 VALUE 0.
          88 END-OF-FILE  VALUE 1.
       01 WS-RECORD-COUNT PIC 9(5) VALUE 0.

       PROCEDURE DIVISION.
           OPEN INPUT EMP-FILE
           IF WS-FILE-STATUS NOT = '00'
               DISPLAY 'Error opening file'
               STOP RUN
           END-IF

           PERFORM UNTIL END-OF-FILE
               READ EMP-FILE
                   AT END
                       SET END-OF-FILE TO TRUE
                   NOT AT END
                       ADD 1 TO WS-RECORD-COUNT
                       DISPLAY 'ID: ' EMP-ID ' Name: ' EMP-NAME
               END-READ
           END-PERFORM

           DISPLAY 'Total records: ' WS-RECORD-COUNT
           CLOSE EMP-FILE
           STOP RUN.

Expected Output

ID: 00001 Name: John Smith
ID: 00002 Name: Jane Doe
Total records: 00002

Key Points

  • INTO copies record to working storage
  • AT END detects end of file
  • INVALID KEY for indexed/relative files
  • Always handle end-of-file condition