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.
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
1. What happens when a program executes OPEN OUTPUT on an existing sequential file?
2. Which clause is mandatory on a READ statement against a sequential file?
3. In the match-merge update pattern, what must be true of both the master and transaction files?
4. Which OPEN mode is used to add new records to the end of an existing sequential file without disturbing existing content?
5. Why can't a sequential file support direct random-key retrieval?
Was this page helpful?
You May Also Like
Indexed File Processing (VSAM)
Understand how COBOL uses indexed files, typically backed by VSAM KSDS on mainframes, to perform fast random and sequential access by key.
File Status Codes
Learn how COBOL's two-character FILE STATUS codes let a program detect and react precisely to the outcome of every file I/O operation.
SORT and MERGE in COBOL
Learn how COBOL's built-in SORT and MERGE verbs reorder and combine files using the language's native sort work file mechanism.
Related Reading
Related Study Notes in Programming
Browse all study notesApache Spark Study Notes
Programming · 30 topics
ProgrammingApache Flink Study Notes
Programming · 30 topics
ProgrammingHadoop Study Notes
Programming · 30 topics
ProgrammingSnowflake Study Notes
Programming · 30 topics
ProgrammingApache Airflow Study Notes
Programming · 30 topics
Programmingdbt (Data Build Tool) Study Notes
Programming · 30 topics