The I-O status is a value that can be used in a COBOL program to check the status of an input/output operation. In order to do this, the FILE STATUS clause must be specified in the FILE CONTROL paragraph of the ENVIRONMENT DIVISION.
The I-O status value is transferred to a two-character data item
during the execution of a CLOSE, OPEN, READ, REWRITE, or WRITE statement,
prior to the execution of any associated imperative statement, and
prior to the execution of any corresponding USE AFTER STANDARD EXCEPTION procedure.
The table below shows I-O status values and their meanings:
I-O status | Meaning |
Execution successful | |
00 | The I-O statement terminated normally. No further information regarding the I-O operation is available. |
02 | A record was read with ALTERNATE KEY and subsequent sequential reading with the same key has found at least one record with an identical key. A record was written with ALTERNATE KEY WITH DUPLICATES and there is already a record with an identical key value for at least one alternate key. |
04 | Record length conflict: A READ statement terminated normally. |
05 | An OPEN statement was executed for an OPTIONAL file which does not exist. |
Execution unsuccessful: at end condition | |
10 | An attempt was made to execute a sequential READ operation. However, no next logical record was available, as the end-of-file was encountered. |
Execution unsuccessful: invalid key condition | |
21 | File sequence error in conjunction with ACCESS MODE IS SEQUENTIAL:
|
22 | Duplicate key An attempt was made to create a record with ALTERNATE KEY, but without WITH DUPLICATES, and there is already an alternate key with the same value in the file. |
23 | Record not located |
24 | Boundary values exceeded |
Execution unsuccessful: unrecoverable error | |
30 | No further information regarding the I-O operation is available (the DMS code provides further information). |
35 | An OPEN statement with the INPUT, I-O or EXTEND phrase was issued for a non-optional file which does not exist. |
37 | OPEN statement on a file that cannot be opened due to the following violations:
|
38 | An attempt was made to execute an OPEN statement for a file previously closed with the LOCK phrase. |
39 | The OPEN statement was unsuccessful as a result of one of the following conditions:
|
Execution unsuccessful: logical error | |
41 | An attempt was made to execute an OPEN statement for a file which was already open. |
42 | An attempt was made to execute a CLOSE statement for a file which was not open. |
43 | For ACCESS MODE IS SEQUENTIAL: |
44 | Record length limits exceeded: |
46 | An attempt was made to execute a sequential READ statement for a file in INPUT or I-O mode. However, no valid next record is available since:
|
47 | An attempt was made to execute a READ or START statement for a file that is not open in INPUT or I-O mode. |
48 | An attempt was made to execute a WRITE statement for a file that is not in OUTPUT, I-O or EXTEND mode. |
49 | An attempt was made to execute a DELETE or REWRITE statement for a file that is not in I-O mode. |
Other conditions with unsuccessful execution | |
90 | System error; no further information regarding the cause is available. |
91 | OPEN error: the actual cause is evident from the DMS code (see "section FILE STATUS clause" specifying data-name-2). |
93 | For shared update processing only (see "COBOL2000 User Guide" [1], "Shared updating of files"): The I-O statement could not terminate normally because a different task is accessing the same file, and the access operations are incompatible: |
94 | For shared update processing only (see "COBOL2000 User Guide" [1], "Shared updating of files"):
|
95 | The specifications in the BLOCK-CONTROL-INFO or BUFFER-LENGTH operands of the ADD-FILE-LINK command are not consistent with the file format, the block length, or the format of the volume being used. |
96 | READ PREVIOUS is not supported for a module compiled with COBRUN ENABLE-UFS-ACCESS=YES. |