100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Programming

Sequential File Processing

Learn how COBOL reads, writes, and updates records in a sequential file, the oldest and most common file organization in mainframe batch systems.

File HandlingBeginner9 min readJul 10, 2026
Analogies

What Is a Sequential File?

A sequential file stores records one after another in the physical order they were written, with no built-in index or key. To find a specific record, a program must read every record before it, starting from the beginning of the file. This organization is declared in the FILE-CONTROL paragraph of the ENVIRONMENT DIVISION using ORGANIZATION IS SEQUENTIAL, and it remains the backbone of batch processing on mainframes because it is fast for full-file passes such as month-end billing runs or payroll extracts.

🏏

Cricket analogy: Reading a sequential file is like watching a Test match scorecard from ball one: to know what happened in over 47, you must scroll past overs 1 through 46 first, just as COBOL must pass every earlier record to reach a later one.

Declaring and Opening a Sequential File

The SELECT clause in FILE-CONTROL names the file and links it to an external dataset via ASSIGN TO, while ORGANIZATION IS SEQUENTIAL (often the default and omitted) confirms the layout. The FD entry in the DATA DIVISION describes the record layout, including RECORD CONTAINS and the 01-level record description with its fields. Before any I/O statement executes, the file must be opened with OPEN INPUT for reading, OPEN OUTPUT for creating a new file, OPEN EXTEND to append to an existing file, or OPEN I-O for update-in-place scenarios that are rarely used with pure sequential files.

🏏

Cricket analogy: Declaring the FD is like the toss and pitch report before a match — it sets expectations for how play (the record layout) will proceed, just as the FD sets the field layout before any READ executes.

READ, WRITE, and the AT END Condition

The READ statement retrieves the next record into the record area defined by the FD; because sequential files have no random positioning, each READ automatically advances to the following record. The mandatory AT END clause (or NOT AT END) detects when the last record has been consumed, typically by setting a WS-EOF-FLAG to 'Y' so the PERFORM UNTIL loop can terminate cleanly. WRITE outputs the current contents of the record area to the file, and because sequential output is append-only within a single OPEN OUTPUT session, records must be written in the final desired order — there is no mechanism to insert a record in the middle later.

🏏

Cricket analogy: The AT END condition is like the umpire calling 'that's the innings' when the tenth wicket falls — a definitive signal that stops the batting loop, just as AT END stops the READ loop.

cobol
IDENTIFICATION DIVISION.
 PROGRAM-ID. READ-CUSTOMERS.

 ENVIRONMENT DIVISION.
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
     SELECT CUSTOMER-FILE ASSIGN TO 'CUSTFILE'
         ORGANIZATION IS SEQUENTIAL.

 DATA DIVISION.
 FILE SECTION.
 FD  CUSTOMER-FILE
     RECORD CONTAINS 80 CHARACTERS.
 01  CUSTOMER-RECORD.
     05  CUST-ID          PIC 9(6).
     05  CUST-NAME        PIC X(30).
     05  CUST-BALANCE     PIC 9(7)V99.

 WORKING-STORAGE SECTION.
 01  WS-EOF-FLAG          PIC X VALUE 'N'.

 PROCEDURE DIVISION.
 MAIN-LOGIC.
     OPEN INPUT CUSTOMER-FILE
     PERFORM UNTIL WS-EOF-FLAG = 'Y'
         READ CUSTOMER-FILE
             AT END
                 MOVE 'Y' TO WS-EOF-FLAG
             NOT AT END
                 DISPLAY CUST-ID ' ' CUST-NAME
         END-READ
     END-PERFORM
     CLOSE CUSTOMER-FILE
     STOP RUN.

By convention, most shops name the end-of-file flag consistently (e.g., WS-EOF-FLAG) and initialize it to 'N' in WORKING-STORAGE so PERFORM UNTIL loops start correctly on every run without extra setup logic.

The Extend-Match-Merge Update Pattern

Because sequential files cannot be updated in place record-by-record without rewriting the whole file, COBOL batch systems traditionally use a match-merge pattern: an old master file and a transaction file, both sorted on the same key, are read in parallel, comparing keys to decide whether to copy the master record unchanged, apply an update, insert a new record, or skip a deleted one, writing everything to a brand-new master file. This pattern, still common in payroll and billing systems, avoids random access entirely and processes millions of records efficiently in a single pass, which is why sequential organization remains attractive even in an era of relational databases.

🏏

Cricket analogy: The match-merge pattern is like comparing two sorted scorecards — the current league table and today's match results — walking down both in order to update each team's standing, similar to comparing master and transaction keys.

Never OPEN OUTPUT on a sequential file you intend to update — this truncates the existing file immediately. Always write updated records to a new output file and, once verified, rename or copy it over the original in a controlled step.

  • Sequential files store records in physical write order with no index; access is strictly front-to-back.
  • ORGANIZATION IS SEQUENTIAL is declared in FILE-CONTROL and paired with an FD in the DATA DIVISION.
  • OPEN INPUT reads, OPEN OUTPUT creates/truncates, OPEN EXTEND appends, OPEN I-O is rarely used for pure sequential files.
  • READ auto-advances to the next record; AT END/NOT AT END is mandatory for detecting end-of-file.
  • WRITE appends records in final order — there is no in-place insertion in a sequential file.
  • The match-merge pattern updates a master file by reading it in parallel with a sorted transaction file.
  • Never OPEN OUTPUT on a file you need to preserve; write to a new file and swap it in after validation.

Practice what you learned

Was this page helpful?

Topics covered

#Programming#COBOLStudyNotes#SequentialFileProcessing#Sequential#File#Processing#Declaring#StudyNotes#SkillVeris#ExamPrep