The SEQUENTIAL clause is used to define sequential file organization and access in COBOL. It specifies that records must be processed in the order they appear in the file, from the first record to the last, providing efficient sequential processing.
The SEQUENTIAL clause is used in the FILE-CONTROL paragraph of the ENVIRONMENT DIVISION.
12345678910111213141516171819202122232425262728293031323334* Basic SEQUENTIAL syntax SELECT file-name ASSIGN TO physical-file-name ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. * Complete example IDENTIFICATION DIVISION. PROGRAM-ID. SEQUENTIAL-EXAMPLE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SEQUENTIAL-FILE ASSIGN TO 'DATA/SEQUENTIAL.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FILE-STATUS. DATA DIVISION. FILE SECTION. FD SEQUENTIAL-FILE. 01 FILE-RECORD. 05 RECORD-DATA PIC X(80). WORKING-STORAGE SECTION. 01 WS-FILE-STATUS PIC XX. PROCEDURE DIVISION. MAIN-LOGIC. OPEN INPUT SEQUENTIAL-FILE READ SEQUENTIAL-FILE CLOSE SEQUENTIAL-FILE STOP RUN.
SEQUENTIAL defines sequential file organization and access.
Examples of using the SEQUENTIAL clause in different scenarios.
12345678910111213141516171819202122232425262728* Input sequential file SELECT INPUT-FILE ASSIGN TO 'INPUT.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-INPUT-STATUS. * Processing loop PROCEDURE DIVISION. PROCESS-FILE. OPEN INPUT INPUT-FILE READ INPUT-FILE AT END MOVE 'Y' TO END-OF-FILE-FLAG NOT AT END PERFORM PROCESS-RECORD END-READ PERFORM UNTIL END-OF-FILE-FLAG = 'Y' READ INPUT-FILE AT END MOVE 'Y' TO END-OF-FILE-FLAG NOT AT END PERFORM PROCESS-RECORD END-READ END-PERFORM CLOSE INPUT-FILE.
SEQUENTIAL for input file processing.
12345678910111213141516171819202122* Output sequential file SELECT OUTPUT-FILE ASSIGN TO 'OUTPUT.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-OUTPUT-STATUS. * Writing records PROCEDURE DIVISION. WRITE-RECORDS. OPEN OUTPUT OUTPUT-FILE MOVE "Record 1" TO RECORD-DATA WRITE FILE-RECORD MOVE "Record 2" TO RECORD-DATA WRITE FILE-RECORD MOVE "Record 3" TO RECORD-DATA WRITE FILE-RECORD CLOSE OUTPUT-FILE.
SEQUENTIAL for output file creation.
123456789101112131415161718192021222324252627282930313233* Input-output sequential file SELECT UPDATE-FILE ASSIGN TO 'UPDATE.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-UPDATE-STATUS. * Updating records PROCEDURE DIVISION. UPDATE-RECORDS. OPEN I-O UPDATE-FILE READ UPDATE-FILE AT END MOVE 'Y' TO END-OF-FILE-FLAG NOT AT END PERFORM UPDATE-RECORD END-READ PERFORM UNTIL END-OF-FILE-FLAG = 'Y' READ UPDATE-FILE AT END MOVE 'Y' TO END-OF-FILE-FLAG NOT AT END PERFORM UPDATE-RECORD END-READ END-PERFORM CLOSE UPDATE-FILE. UPDATE-RECORD. * Modify record data ADD 1 TO RECORD-COUNTER REWRITE FILE-RECORD.
SEQUENTIAL for file updates.
Understanding best practices ensures effective use of the SEQUENTIAL clause.
1. What is the primary purpose of the SEQUENTIAL clause in COBOL?
2. In which COBOL division is the SEQUENTIAL clause typically used?
3. What does SEQUENTIAL organization mean for file access?
4. Can SEQUENTIAL files be updated in place?
5. What is the relationship between SEQUENTIAL and RANDOM access modes?