Module 10: File processing
START statement
- START statement is used to position the file pointer at a specific record location within indexed or relative file for subsequent sequential record retrieval
- This statement can be used only for Indexed and Relative files which are opned either in INPUT or I-O mode.
- Access mode of file must be sequential or dynamic. It cannot be coded for Random access
- It establish the current location in the cluster for a READ NEXT statement.
- It does not retrieve record; It only sets the current record pointer
- Basic Syntax:-
START file-name [KEY IS {IS EQUAL TO/ IS = / IS GREATER THAN / IS > / IS NOT LESS THAN / IS NOT < / IS GREATER THAN OR EQUAL TO / IS >= } key-data-name] [INVALID KEY imperative-statement-1] [NOT INVALID KEY imperative-statement-2] [END-START].
- Where,
- file-name is logical file name
- KEY IS used to position file pointer at logical record in file whose key field satisfy the comparison
- INVALID KEY imperative-statement-1 : This becomes true when record is not found for specified key and thus causes execution of imperative-statement-1
- NOT INVALID KEY imperative-statement-2: This is used to specify statements to be executed when START operation succeeds
Example of START statement:-
INPUT FILE (KSDS DATASET):-
10000STEVE OKURA
20000AMIT KHATRI
30000ASHIK KONDANA
40000DHAVAL GOSALIYA
50000DARSHAN MANIYAR
60000NAYANISH DAMANI
COBOL PROGRAM:-
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. STARTPGM.
000300 ENVIRONMENT DIVISION.
000400 INPUT-OUTPUT SECTION.
000500 FILE-CONTROL.
000600 SELECT EMPLOYEE ASSIGN TO EMPL
000700 ORGANIZATION IS INDEXED
000800 ACCESS IS SEQUENTIAL
000900 RECORD KEY IS EMPL-ID.
001000 DATA DIVISION.
001100 FILE SECTION.
001200 FD EMPLOYEE.
001300 01 EMPLOYEE-REC.
001400 05 EMPL-ID PIC 9(05).
001500 05 EMPL-NAME PIC X(15).
001600 WORKING-STORAGE SECTION.
001700 01 WS-EMPL.
001800 05 WS-EMPL-ID PIC 9(05).
001900 05 WS-EMPL-NAME PIC X(15).
002000 01 WS-EOF-FLAG-SW PIC X(1) VALUE 'N'.
002100 88 WS-EOF-FLAG VALUE 'Y'.
002200 88 WS-EOF-FLAG-NO VALUE 'N'.
002300 PROCEDURE DIVISION.
002400 MAIN-PARA.
002500 OPEN INPUT EMPLOYEE
002600 MOVE '20000' TO EMPL-ID
002700 START EMPLOYEE KEY IS > EMPL-ID
002800 PERFORM READ-PARA THRU READ-PARA-EXIT
002900 UNTIL WS-EOF-FLAG-SW = 'Y'.
003000 CLOSE EMPLOYEE
003100 STOP RUN.
003200 READ-PARA.
003300 READ EMPLOYEE INTO WS-EMPL
003400 AT END
003500 MOVE 'Y' TO WS-EOF-FLAG-SW
003600 NOT AT END
003700 DISPLAY 'REC : ' WS-EMPL
003800 END-READ.
003900 READ-PARA-EXIT.
004000 EXIT.
Mainframe Job Step to run above program:-
//STEP01 EXEC PGM=STARTPGM
//STEPLIB DD DSN=USER.TEST.LOADLIB,DISP=SHR
//EMPL DD DSN=MAINFRAM.FILE.KSDS.MSTR,DISP=SHR
//SYSOUT DD SYSOUT=*
SYSOUT After Job run:-
REC : 30000ASHIK KONDANA
REC : 40000DHAVAL GOSALIYA
REC : 50000DARSHAN MANIYAR
REC : 60000NAYANISH DAMANI