DELETE
The DELETE statement deletes the current record from a specified file.
••••• DELETE ••• ••••••••
(1)
(2) (3)
(2) Application ID |
(3) File name |
For process types other than input, the current process control file record is implicitly read and held if a REWRITE or DELETE statement exists for the file in any event point in the process; thus, an explicit read with hold is generally not necessary. If, however, another file is read and held within the event point that contains the REWRITE or DELETE, and this READ occurs before the REWRITE or DELETE, the operating system loses the “hold” on the process control file record. In this case, the record must then be explicitly reread and held or the rewrite/delete fails.
Note that care should be taken when deleting the current process control file record in an input process. The normal file processing for the process control file assumes that the record still exists when it needs to rewrite or delete the record.
The record you want to delete from a specified file must have previously been read with the Hold? specification set to 1 (hold) or 2 (recover), or the delete must be done on the record currently being held in the process control file.
For input processes, a record from the process control file must be explicitly held by a statement to delete the record.
The DELETE statement cannot be used with sequential or one-record files.
In an input process, if a record is rewritten or deleted with ILF statements, a non-recoverable runtime error occurs if the input processor also attempts to rewrite or delete the record.
The DELETE statement does not modify the current true/false status indicators. If the deletion fails, a non-recoverable runtime error occurs and the process will be canceled.
BEG READ, END READ, READ, READNEXT, REWRITE
The following example reads the CUSTOMER file and, if the customer record exists (if the read succeeds), the routine deletes that customer record.
READ TAR
CUSTOMER HOLD
1 FT 0 BY CUSTOMER NO
T DELETE TAR
CUSTOMER