Table explains the meaning of the integer IERR
returned as the last parameter of most EPIO subroutine calls,
zero meaning no error.
For each error two types of routines are quoted: those called by the user,
and in which the error condition was detected, and those in which the
error occurred.
Control is always returned to the user, but some of the errors (marked by * in first column) are so serious that it becomes meaningless to continue reading or writing on the unit concerned, at least after a limited number of them.
Error | Routine | User | Meaning |
routine | |||
1 | EPBLIN | EPREAD | End of file on reading or open failure on IBM |
EPBOUT | EPOUTL | reading or writing | |
EPOUTS | |||
2 | EPBLIN | EPREAD | r/w parity, or I/O error (IBM) |
EPBOUT | EPOUTL | ||
EPOUTS | |||
EPRWND | |||
3 | EPBLIN | EPREAD | end of information on reading, or in some cases after an open error on IBM |
4* | EPBLIN | EPREAD | physical record length
|
5* | EPBLIN | EPREAD | physical record length of record just read |>| actual length of block read or user buffer too small |
6 | see | EPREAD | user record chopped (|IREC| too small, status word 2) the actual length (including header) can be retrieved from status word 20 using EPGETW |
7* | see | EPREAD | physical header error; could be a record in the old format |
8 | see | EPOUTS | invalid mode specified in call |
EPOUTL | |||
EPREAD | |||
9 | see | EPREAD | call to EPREADwith mode 11, 12, or 13, without prior call with |MODE=20| |
You can also get this error reading OLD format, with |MODE=20| followed by 11, 12 or 13 | |||
10 | EPBLIN | EPREAD | end-of-run (logical record length = 0) |
11* | EPBOUT | EPOUTS | unit not declared on JCL card, |
EPOUTL | or wrong |BLKSIZE| (only IBM) | ||
EPBLIN | EPREAD | ||
12 | EPBOUT | EPOUTS | end of volume, or unrecovered write |
EPOUTL | parity (only IBM bib-IOPACK) | ||
EPCLOS | |||
EPRWND | |||
13 | EPUNIT | EPOUTS | maximum number of units reached |
EPOUTL | |||
EPRWND | |||
EPADDH | |||
EPSETW | |||
EPSETA | |||
EPREAD | |||
EPGETA | |||
EPGETW | |||
14 | see | EPDROP | unit does not exist |
EPADDH | |||
EPEND | |||
15 | see | EPOUTS | logical record header (or complete record) |
EPOUTL | too long to fit in physical block | ||
16 | see | EPGETW | status word address out of range |
EPGETA | |||
EPSETW | |||
EPSETA | |||
17 | see | EPADDH | user switches from reading to writing |
EPREAD | or vice versa, without rewinding unit | ||
EPOUTL | |||
EPOUTS | |||
18 | see | EPREAD | displacement to start of logical record inconsistent with current logical record length, not tested by EPFRD |
19 | EPOUTL | EPOUTL | number of words to write
|
EPOUTS | |||
20 | EPOUTL | EPOUTL | Negative record length or negative or |
EPOUTS | zero header length in user call | ||
21 | EPREAD | EPREAD | Old format and |MODE(≠)2| |
22 | EPBLIN | EPREAD | Wrong 32 bit physical header read |
23 | EPREAD | EPREAD | Logical record unit neither 16 nor 32 bit (status word 3). |
24 | EPOUTL | EPOUTL | Logical record or header length |
EPOUTS | |>| 65536 for 16 bit headers | ||
25 | EPBLIN | EPREAD | Error from cfseekreading in random access mode |
: Overview of the error codes