Module 10: File processing
DELETE statement
- Used to logically remove records from indexed and relative files only
- It deletes the most recently read record
- To delete a record, the file should be opened in I-O mode
- Basic syntax:-
DELETE file-name RECORD [INVALID KEY imperative-statement-1] [NOT INVALID KEY imperative-statement-2] [END-DELETE].
- Where,
- file-name is logical file name from which record is to be deleted
- INVALID KEY imperative-statement-1 : This becomes true when record is not found causes execution of imperative-statement-1
- NOT INVALID KEY imperative-statement-2: This is used to specify statements to be executed when DELETE operation succeeds
Example of DELETE 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. DELPGM.
000300 ENVIRONMENT DIVISION.
000400 INPUT-OUTPUT SECTION.
000500 FILE-CONTROL.
000600 SELECT EMPLOYEE ASSIGN TO EMPL
000700 ORGANIZATION IS INDEXED
000800 ACCESS IS RANDOM
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 PROCEDURE DIVISION.
002100 MAIN-PARA.
002200 OPEN I-O EMPLOYEE
002300 MOVE '20000' TO EMPL-ID
002400 READ EMPLOYEE INTO WS-EMPL
002500 KEY IS EMPL-ID
002600 INVALID KEY
002700 DISPLAY 'RECEORD KEY IS INVALID'
002800 NOT INVALID KEY
002900 DISPLAY 'REC : "' WS-EMPL '" WILL BE DELETED'
003000 END-READ.
003100 DELETE EMPLOYEE RECORD
003200 INVALID KEY
003300 DISPLAY 'RECEORD KEY IS INVALID'
003400 NOT INVALID KEY
003500 DISPLAY 'REC DELETION SUCCESSFUL'
003600 END-DELETE.
003700 CLOSE EMPLOYEE
003800 STOP RUN.
Mainframe Job Step to run above program:-
//STEP01 EXEC PGM=DELPGM
//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 : "20000AMIT KHATRI " WILL BE DELETED
REC DELETION SUCCESSFUL
File content after above Program/Job run:-
10000STEVE OKURA
30000ASHIK KONDANA
40000DHAVAL GOSALIYA
50000DARSHAN MANIYAR
60000NAYANISH DAMANI