The SELECT statement is used to define file connections in COBOL. It establishes the relationship between logical file names used in the program and physical file locations or devices.
The SELECT statement is used in the FILE-CONTROL paragraph of the ENVIRONMENT DIVISION.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748* Basic SELECT syntax ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT logical-file-name ASSIGN TO physical-file-name. * Complete example IDENTIFICATION DIVISION. PROGRAM-ID. SELECT-EXAMPLE. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INPUT-FILE ASSIGN TO 'INPUT.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FILE-STATUS. SELECT OUTPUT-FILE ASSIGN TO 'OUTPUT.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-OUTPUT-STATUS. DATA DIVISION. FILE SECTION. FD INPUT-FILE. 01 INPUT-RECORD. 05 INPUT-DATA PIC X(80). FD OUTPUT-FILE. 01 OUTPUT-RECORD. 05 OUTPUT-DATA PIC X(80). WORKING-STORAGE SECTION. 01 WS-FILE-STATUS PIC XX. 01 WS-OUTPUT-STATUS PIC XX. PROCEDURE DIVISION. MAIN-LOGIC. OPEN INPUT INPUT-FILE OUTPUT OUTPUT-FILE READ INPUT-FILE WRITE OUTPUT-RECORD FROM INPUT-RECORD CLOSE INPUT-FILE OUTPUT-FILE STOP RUN.
SELECT establishes file connections in the ENVIRONMENT DIVISION.
Examples of using the SELECT statement in different scenarios.
123456* Sequential file selection SELECT SEQUENTIAL-FILE ASSIGN TO 'DATA/SEQUENTIAL.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-FILE-STATUS.
SELECT for sequential file processing.
1234567* Indexed file selection SELECT INDEXED-FILE ASSIGN TO 'DATA/INDEXED.IDX' ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM RECORD KEY IS INDEXED-KEY FILE STATUS IS WS-INDEXED-STATUS.
SELECT for indexed file with random access.
123456* Printer file selection SELECT PRINT-FILE ASSIGN TO PRINTER ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS WS-PRINT-STATUS.
SELECT for printer output.
Understanding best practices ensures effective use of the SELECT statement.
1. What is the primary purpose of the SELECT statement in COBOL?
2. In which COBOL division is the SELECT statement used?
3. What does the ASSIGN clause in a SELECT statement do?
4. Can a SELECT statement be used for both input and output files?
5. What is the relationship between SELECT and FD statements?