Introduction
This document provides a summary of the two-byte File-Status-Key (sometimes referred to as file return code or file status code). For the COBOL environment if the FILE STATUS clause is specified in the FILE-CONTROL entry, a value is placed in the specified status key (the 2-character data item named in the FILE STATUS clause) during execution of any request on that file. The value indicates the status of that request. The value is placed in the status key before execution of any EXCEPTION/ERROR declarative or INVALID KEY/AT END phrase associated with the request.
The following tables contain file-status-key content that may be set by Micro Focus COBOL (Mainframe Express or Net Express) or an IBM Mainframe (MVS or OS/390).
File Status Key Overview
The ANS/85 standard provides for a two-byte file-status-key. The first character of the file-status-key is known as status-key-1. The second character is known as status-key-2. The combinations of possible values and their meanings are shown below with some comments where vendor additions or extensions may occur.
Note: If status-key-1 is a nine (9) then status key 2 is "implementor-defined". Many vendors take advantage of the x"00' to x'FF' (or 0-255) binary value. Therefore, the file status key may not always be a numeric value.
Primary File Status Keys
The first character of the file-status-key is known as status-key-1; the second character is known as status-key-2. The combinations of possible values and their meanings are shown below.
Status 1 & 2 | Description |
00 | Successful completion |
02 | Indexed files only. Possible causes: For a READ statement, the key value for the current key is equal to the value of that same key in the next record in the current key of reference. For a WRITE or REWRITE statement, the record just written created a duplicate key value for at least one alternate record key for which duplicates are allowed. |
04 | The length of the record being processed does not conform to the fixed file attributes for that file. |
05 | The referenced optional file is not present at the time the OPEN statement is executed. |
06 | Attempted to write to a file that has been opened for input. |
07 | Sequential files only. For an OPEN or CLOSE statement with the REEL/UNIT phrase the referenced file is a non-reel/unit medium. |
08 | Attempted to read from a file opened for output. |
09 | No room in directory or directory does not exist. |
10 | No next logical record exists. You have reached the end of the file. |
12 | Attempted to open a file that is already open. |
13 | File not found. |
14 | Relative files only. The number of significant digits in the relative record number is larger than the size of the relative key data item described for that file. Too many files open simultaneously (Micro Focus). |
15 | Too many indexed files open (Micro Focus). |
16 | Too many device files open (Micro Focus). |
17 | Record error: probably zero length (Micro Focus). |
18 | Read part record error: EOF before EOR or file open in wrong mode (Micro Focus). |
19 | Rewrite error: open mode or access mode wrong (Micro Focus). |
20 | Device or resource busy (Micro Focus). |
21 | Sequentially accessed files only. Indicates a sequence error. The ascending key requirements of successive record key values has been violated, or, the prime record key value has been changed by a COBOL program between successful execution of a READ statement and execution of the next REWRITE statement for that file. |
22 | Indexed and relative files only. Indicates a duplicate key condition. Attempt has been made to store a record that would create a duplicate key in the indexed or relative file OR a duplicate alternate record key that does not allow duplicates. |
23 | Indicates no record found. An attempt has been made to access a record, identified by a key, and that record does not exist in the file. Alternatively a START or READ operation has been tried on an optional input file that is not present. |
24 | Relative and indexed files only. Indicates a boundary violation. Possible causes: Attempting to write beyond the externally defined boundaries of a file Attempting a sequential WRITE operation has been tried on a relative file, but the number of significant digits in the relative record number is larger than the size of the relative key data item described for the file. |
30 | The I/O statement was unsuccessfully executed as the result of a boundary violation for a sequential file or as the result of an I/O error, such as a data check parity error, or a transmission error. |
32 | Too many Indexed files opened. This can also happen when a sequential file is open for input and an attempt is made to open the same file for output.(Run Time System (RTS) message by Micro Focus). |
34 | The I/O statement failed because of a boundary violation. This condition indicates that an attempt has been made to write beyond the externally defined boundaries of a sequential file. |
35 | An OPEN operation with the I-O, INPUT, or EXTEND phrases has been tried on a non-OPTIONAL file that is not present. Trying to open a file that does not exist. May need to map the COBOL file name to the physical file name. (Micro Focus, refer to the ASSIGN(EXTERNAL) directive) |
37 | An OPEN operation has been tried on a file which does not support the open mode specified in the OPEN statement. |
38 | An OPEN operation has been tried on a file previously closed with a lock. |
39 | A conflict has been detected between the actual file attributes and the attributes specified for the file in the program. This is usually caused by a conflict with record-length, key-length, key-position or file organization. Other possible causes are: 1. Alternate indexes are incorrectly defined (Key length or position, duplicates or sparse parameters). 2. The Recording Mode is Variable or Fixed or not defined the same as when the file was created.. |
41 | An OPEN operation has been tried on file already opened. |
42 | A CLOSE operation has been tried on file already closed. |
43 | Files in sequential access mode. The last I/O statement executed for the file, before the execution of a DELETE or REWRITE statement, was not a READ statement. |
44 | A boundary violation exists. Possible causes: Attempting to WRITE or REWRITE a record that is larger than the largest, or smaller than the smallest record allowed by the RECORD IS VARYING clause of the associated file Attempting to REWRITE a record to a file and the record is not the same size as the record being replaced. |
45 | An attempt has been made to REWRITE a record to a file, and the record is not the same size as the record being replaced. (Micro Focus) For line sequential files this refers to the physical size of the record, that is after space removal, tab compression and null insertion. In this case, the physical size of the new record is allowed to be smaller than that of the record being replaced. |
46 | A sequential READ operation has been tried on a file open in the INPUT or I-O mode but no valid next record has been established. |
47 | A READ or START operation has been tried on a file not opened INPUT or I-O. |
48 | A WRITE operation has been tried on a file not opened in the OUTPUT, I-O, or EXTEND mode, or on a file open I-O in the sequential access mode. |
49 | A DELETE or REWRITE operation has been tried on a file that is not opened I-O. |
Extended File Status Keys
The first character of the file-status-key is known as status-key-1. If status-key-1 is equal to 9 then status-key-2 is a one byte, binary value as defined in the following table.
Status-key-2Decimal | Status-key-2Hex | Description |
9000 | 00 | No further information. |
9001 | 01 | Insufficient buffer space. Could also indicate an out of memory situation. |
9002 | 02 | File not open when access tried. |
9003 | 03 | Serial mode error. |
9004 | 04 | Illegal file name. Micro Focus, the COBOL file name may not be mapped to a fully qualified PC file name. Check the ASSIGN(EXTERNAL) directive and possible environment variable setting for the COBOL file name. |
9005 | 05 | Illegal device specification. |
9006 | 06 | Attempt to write to a file opened for input. |
9007 | 07 | Disk space exhausted. |
9008 | 08 | Attempt to input from a file opened for output. |
9009 | 09 | No room in directory or directory does not exist. |
9010 | 0A | File name not supplied. |
9012 | 0C | Attempt to open a file that is already open. |
9013 | 0D | File not found. |
9014 | 0E | Too many files open simultaneously. |
9015 | 0F | Too many indexed files open. |
9016 | 10 | Too many device files open. |
9017 | 11 | Record error, probable cause is zero record length. |
9018 | 12 | Read partial record error: EOF before EOR or file open in wrong mode. This can also be cause when a physical line sequential file (ASCII/Text) is being read as a sequential file and the directive SEQUENTIAL(LINE) is not set (Micro Focus). |
9019 | 13 | Rewrite error: open mode or access mode wrong. |
9020 | 14 | Device or resource busy. |
9021 | 15 | File is a directory. |
9022 | 16 | Illegal or impossible access mode for OPEN. |
9023 | 17 | Illegal or impossible access mode for CLOSE. |
9024 | 18 | Disk I/O error. Attempting to read a LINE SEQUENTIAL file as a SEQUENTIAL file(Micro Focus). |
9025 | 19 | Operating system data error. |
9026 | 1A | Block I/O error. |
9027 | 1B | Device not available. |
9028 | 1C | No space on device. |
9029 | 1D | Attempt to delete open file. |
9030 | 1E | File system is read only. |
9031 | 1F | Not owner of file. |
9032 | 20 | Too many indexed files, or no such process. |
9033 | 21 | Physical I/O error. |
9034 | 22 | Incorrect mode or file descriptor. |
9035 | 23 | Attempt to access a file with incorrect permission. |
9036 | 24 | File already exists. |
9037 | 25 | File access denied. |
9038 | 26 | Disk not compatible. |
9039 | 27 | File not compatible. |
9040 | 28 | Language initialization not set up correctly. |
9041 | 29 | Corrupt index file. |
9042 | 2A | Attempt to write on broken pipe. |
9043 | 2B | File information missing for indexed file. (Micro Focus) This could indicate the filename.IDX is missing. |
9044 | 2C | Attempt to open an NLS file using an incompatible program. |
9045 | 2D | Indexed structure overflow. (Could indicate that you have reached the maximum number of duplicate keys.) |
9065 | 41 | File locked. |
9066 | 42 | Attempt to add duplicate record key to indexed file. |
9067 | 43 | Indexed file not open. |
9068 | 44 | Record locked. |
9069 | 45 | Illegal argument to ISAM module. |
9070 | 46 | Too many indexed files open. |
9071 | 47 | Bad indexed file format. |
9072 | 48 | End of indexed file. |
9073 | 49 | No record found in indexed file. |
9074 | 4A | No current record in indexed file. |
9075 | 4B | Indexed data file name too long. |
9076 | 4C | Internal ISAM module failure. |
9077 | 4D | Illegal key description in indexed file. |
9081 | 51 | Key already exists in indexed file. |
9090 | 5A | User does not have appropriate access permissions to the file (ANS74 and usually RM/COBOL). |
9092 | 5C | A PUT for update or an ERASE was issued without a previous GET for update. |
9100 | 64 | Invalid file operation. |
9101 | 65 | Illegal operation on an indexed file. |
9102 | 66 | Sequential file with non-integral number of records. |
9104 | 68 | Null file name used in a file operation. |
9105 | 69 | Memory allocation error. |
9124 | 7C | Connection to remote system is failing. (Micro Focus) This could indicate a File Name is mapped to use Fileshare and the Fileshare Server has not been started. |
9125 | 7D | Connection to remote system file server is failing (Micro Focus) |
9129 | 81 | Attempt to access record zero of relative file. |
9135 | 87 | File must not exist. |
9138 | 8A | File closed with lock - cannot be opened. |
9139 | 8B | Record length or key data inconsistency. |
9141 | 8D | File already open - cannot be opened. |
9142 | 8E | File not open - cannot be closed. |
9143 | 8F | REWRITE/DELETE in sequential mode not preceded by successful READ. |
9146 | 92 | No current record defined for sequential read. |
9147 | 93 | Wrong open mode or access mode for READ/START. |
9148 | 94 | Wrong open mode or access mode for WRITE. This can be caused by issuing a read after the end-of-file has been reached during sequential processing. |
9149 | 95 | Wrong open mode or access mode for REWRITE/ DELETE. |
9150 | 96 | Program abandoned at user request. |
9151 | 97 | Random read on sequential file. |
9152 | 98 | REWRITE on file not opened I-O. |
9158 | 9E | Attempt to REWRITE to a line-sequential file. |
9159 | 9F | Malformed line sequential-file. |
9161 | A1 | File header not found. |
9173 | AD | Called program not found. |
9180 | B4 | End-of-file marker error. |
9182 | B6 | Console input or console output open in wrong direction. |
9183 | B7 | Attempt to open line sequential file for I-O. |
9188 | BC | File name too large. |
9193 | C1 | Error in variable length count. |
9194 | C2 | File size too large. |
9195 | C3 | DELETE/REWRITE not preceded by a READ. |
9196 | C4 | Record number too large in relative or indexed file. |
9210 | D2 | File is closed with lock. |
9213 | D5 | Too many locks. |
9218 | DA | Malformed MULTIPLE REEL/UNIT file. |
9219 | DB | Operating system shared file limit exceeded. |