💻 COBOL
COBOL File Handling
Intermediate 🕑 25 min read
👁 0 views
File Handling in COBOL
COBOL excels at file processing. It supports various file organizations and access modes for efficient data handling.
File Organizations
- SEQUENTIAL - Records accessed in order
- INDEXED - Records accessed by key (VSAM KSDS)
- RELATIVE - Records accessed by relative number
Access Modes
- SEQUENTIAL - Read/write records in sequence
- RANDOM - Direct access by key
- DYNAMIC - Both sequential and random
File Operations
| Operation | Description |
|---|---|
| OPEN | Open file for processing |
| CLOSE | Close file after processing |
| READ | Read a record from file |
| WRITE | Write a record to file |
| REWRITE | Update existing record |
| DELETE | Delete a record |
| START | Position for indexed files |
Open Modes
- INPUT - Read only
- OUTPUT - Write only (creates new file)
- I-O - Read and update
- EXTEND - Append to existing file
File Status Codes
Always check file status after operations:
- 00 - Successful
- 10 - End of file
- 22 - Duplicate key
- 23 - Record not found
- 35 - File not found
Code Example
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE ASSIGN TO "INPUT.DAT"
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-FILE-STATUS.
SELECT MASTER-FILE ASSIGN TO "MASTER.DAT"
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS MF-EMP-ID
FILE STATUS IS WS-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD INPUT-FILE.
01 INPUT-REC.
05 INP-EMP-ID PIC 9(6).
05 INP-EMP-NAME PIC X(30).
05 INP-SALARY PIC 9(7)V99.
FD MASTER-FILE.
01 MASTER-REC.
05 MF-EMP-ID PIC 9(6).
05 MF-EMP-NAME PIC X(30).
05 MF-SALARY PIC 9(7)V99.
WORKING-STORAGE SECTION.
01 WS-FILE-STATUS PIC XX.
01 WS-EOF PIC X VALUE "N".
PROCEDURE DIVISION.
MAIN-LOGIC.
OPEN INPUT INPUT-FILE
OPEN I-O MASTER-FILE
IF WS-FILE-STATUS NOT = "00"
DISPLAY "FILE OPEN ERROR: " WS-FILE-STATUS
STOP RUN
END-IF
PERFORM READ-PROCESS UNTIL WS-EOF = "Y"
CLOSE INPUT-FILE MASTER-FILE
STOP RUN.
READ-PROCESS.
READ INPUT-FILE
AT END MOVE "Y" TO WS-EOF
NOT AT END PERFORM UPDATE-MASTER
END-READ.
UPDATE-MASTER.
MOVE INP-EMP-ID TO MF-EMP-ID
READ MASTER-FILE
INVALID KEY
PERFORM ADD-NEW-RECORD
NOT INVALID KEY
PERFORM UPDATE-RECORD
END-READ.
ADD-NEW-RECORD.
MOVE INPUT-REC TO MASTER-REC
WRITE MASTER-REC
INVALID KEY
DISPLAY "WRITE ERROR"
END-WRITE.
UPDATE-RECORD.
MOVE INP-EMP-NAME TO MF-EMP-NAME
MOVE INP-SALARY TO MF-SALARY
REWRITE MASTER-REC
INVALID KEY
DISPLAY "REWRITE ERROR"
END-REWRITE.