MainframeKit

S001

I/O error (IEC020I)SYSTEM ABEND

A sequential or other non-VSAM file hit an I/O error or a record-attribute problem, and the program had no way to handle it.

MOST LIKELY

LRECL or BLKSIZE in the program or DD does not match the real data set.

FIRST CHECK

Read the IEC020I return code and the DD name in the job log.

TRY IT ▸

Block size and space calculator

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

  1. Read the IEC020I return code and the DD name in the job log.
  2. Compare LRECL and BLKSIZE in the program, the DD and the data set label.
  3. Make sure the program stops reading after end of file.
  4. Check that all concatenated data sets have compatible attributes.
  5. 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