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

  1. SEQUENTIAL - Records accessed in order
  2. INDEXED - Records accessed by key (VSAM KSDS)
  3. 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

OperationDescription
OPENOpen file for processing
CLOSEClose file after processing
READRead a record from file
WRITEWrite a record to file
REWRITEUpdate existing record
DELETEDelete a record
STARTPosition 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.