💻 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