What it means
Abend 013 comes with message IEC141I, which gives a return code, the DD name and the data set. OPEN merges attributes from the program, the DD statement and the data set label; if the result is impossible, OPEN fails.
Common return codes: 14 means the partitioned or sequential organisation does not match the DCB; 18 means the PDS member was not found; 20 means block size is not a multiple of record length for fixed-blocked records (or similar QSAM conflicts); 60 means RECFM=F with BLKSIZE not equal to LRECL; C0 means a SYSIN, SYSOUT or other subsystem data set could not be opened.
Typical causes
- Program record format or length differs from the data set's RECFM and LRECL.
- A DCB on the DD, often copied from another job, overrides correct values.
- A member name that does not exist, or a member given for a non-partitioned data set.
- Block size inconsistent with record format and length.
- A data set allocated with no attributes and then opened for input.
How to fix it
- Read the IEC141I return code and the DD name.
- Compare program file definition, DD DCB and actual data set attributes side by side.
- For return code 18, list the library and check the member name.
- Remove wrong DCB overrides or recreate the data set with the right attributes.
- In COBOL, BLOCK CONTAINS 0 lets the system use the data set's block size.
Example
Illustrative only; names and values are invented.
IEC141I 013-18,IGG0191B,ACCTJOB1,STEP010,INFILE,0A22,VOL045,
USER01.ACCT.SOURCE(MISSING)
IEF450I ACCTJOB1 STEP010 - ABEND=S013 U0000 REASON=00000018