What it means
Abend 001 comes with message IEC020I, which names the job, step, DD, volume and data set and gives a return code. The return code says what went wrong.
Common return codes: 0 means the record length or block size does not match the data set; 1 means an I/O error with no SYNAD exit; 4 (QSAM) means no SYNAD exit and the error option is ABE; 5 (QSAM) means the program issued a GET after end of file.
Typical causes
- LRECL or BLKSIZE in the program or DD does not match the real data set.
- Reading past end of file (another GET after the AT END condition).
- Reading a data set opened for output, or writing one opened for input.
- A concatenated data set with different attributes from the first one.
- A real hardware or media error on the device.
How to fix it
- Read the IEC020I return code and the DD name in the job log.
- Compare LRECL and BLKSIZE in the program, the DD and the data set label.
- Make sure the program stops reading after end of file.
- Check that all concatenated data sets have compatible attributes.
- For hardware errors, look for an accompanying IEA000I message and involve the storage team.
Example
Illustrative only; names and values are invented.
IEC020I 001-5,modname,PAYJOB01,STEP010,INFILE,0A21,VOL001,
USER01.PAY.INPUT
IEF450I PAYJOB01 STEP010 - ABEND=S001 U0000 REASON=00000005