IAM I/O Request Error Codes
IAM adheres to the VSAM application programming interface guidelines. When a request fails, IAM sets a non-zero return code in register 15, and provides a reason code within the RPL. Abends are avoided as much as possible. The appropriate exit routine, EODAD, LERAD, or SYNAD will be given control, if so specified by the application program. It is the responsibility of the application program to verify the results of each I/O request, and take the action it deems appropriate in response to any error circumstance. As a result of a failing request, IAM will set the return code and error code to match the VSAM codes as much as is possible.
The table below indicates the return code, which is returned in register 15, and the error code, which is returned in the RPL field RPLERRCD. (The return code is also in the RPL, in field RPLRTNCD.) The error code is returned to an application program through the use of the SHOWCB macro, by requesting the FDBK field of an RPL.
Return Code | Error Code (Decimal) | Error Code (Hex) | Description of Error Condition: |
---|---|---|---|
0 | Request completed successfully. | ||
0 | 8 | X’08’ | Indicates a duplicate alternate key. For GET requests, this means that there are additional base records with the same alternate key. For PUT requests, indicates a duplicate entry for the alternate key was created. |
4 | 0 | X’00’ | Indicates that the RPL was already active with another request. |
08 | Logical Error Occurred (See Error Code for Reason) | ||
08 | 4 | X'04' | Logical End of File, there are no records with any higher key value than that of the last record returned. For a POINT, or START BROWSE, the key specified is higher than the highest key on the file. |
08 | 8 | X'08' | Duplicate Record. A PUT to add a record was issued, however there was already a record on the file with that same key. |
08 | 12 | X'0C' | Out of sequence. On a PUT during file load, the key of the record is lower than the previous record. Records must be loaded in ascending key sequence. On a PUT in sequential mode (OPTCD=SEQ), the key of the record being added is lower than the key of the last record processed (either retrieved or added) by this RPL. On a Skip Sequential request (POINT or GET), the key requested is lower than the key of the record previously retrieved. |
08 | 16 | X'10' | No record was found in the file with the specified key. |
08 | 20 | X'14' | Record is under Exclusive Control: The same record has been requested for UPDATE by another RPL. The RPL message area, if provided, has the address of the RPL that holds the requested record for update. From IAM-RLS: The records is locked by another RPL for the same logical unit of work (batch job, TSO user, or CICS transaction). |
08 | 21 | X’15’ | IAM-RLS detected that by waiting for this record lock, this request would have caused in a deadlock. |
08 | 22 | X’16’ | IAM-RLS: Request timed out waiting for a record lock. |
08 | 24 | X'18' | IAM-RLS: Request was waiting for a record lock that was retained by another job due to an abend. |
08 | 28 | X'1C' | For Compatible format files, the Independent Overflow area is filled, the file needs to be reorganized. For Enhanced format files, there either is insufficient DASD space to expand the file, or the file has used up the maximum number of extents it is permitted. |
08 | 32 | X'20' | ESDS: RBA supplied does not specify the address of the beginning of a record. No record at the specified relative byte address. |
08 | 40 | X'28' | IAM was not able to obtain virtual storage to complete the request. This will normally only occur on a GET request, with OPTCD=LOC, where IAM could not obtain storage for an area to contain the requested record. |
08 | 44 | X'2C' | The area provided by the application program was not large enough to contain the requested record. The record size is in the RPL field RPLRLEN. |
08 | 64 | X'40' | For Enhanced Format files: IAM was unable to obtain virtual storage for an additional string (place holder). For Compatible Format files, an insufficient number was specified for STRNO, and IAM ran out of place holders. |
08 | 68 | X'44' | An UPDATE request was issued, that is, PUT or ERASE, however, the file was opened for INPUT processing only. |
08 | 72 | X'48' | Keyed access attempted on an ESDS type of file. |
08 | 80 | X'50' | Erase attempted on an ESDS type of file. |
08 | 84 | X'54' | PUT with locate mode (OPTCD=LOC) is not permitted. |
08 | 88 | X'58' | RPL is not positioned for the specified sequential request. A POINT is required, or a random get with positioning: OPTCD=(DIR,NSP). |
08 | 92 | X'5C' | A PUT or ERASE request was issued without a preceding GET for update. |
08 | 96 | X'60' | On an update PUT request, the key in the record does not match the key of the record read for update. |
08 | 100 | X'64' | ESDS file type: on an update PUT request, the user attempted to change the record length. |
08 | 104 | X'68' | Invalid RPL options specified. (OPTCD) KSDS: Relative Byte Address or Control Interval processing is not supported by IAM. (OPTCD=ADR or OPTCD=CNV) or a get previous request is issued in skip sequential mode (RPL OPTCD=(SKP,BWD). |
08 | 108 | X'6C' | The record length either is less than the minimum record length, which is (key length + key offset), or exceeds the maximum defined record length. For compatible format IAM files with the FIXED length record attribute, the record length was not equal to the defined length. |
08 | 112 | X'70' | The key length in the RPL is greater than the defined length of the key. (RPL OPTCD=GEN type requests only.) |
08 | 116 | X'74' | The request type (that is, a GET, POINT, or ERASE) is not valid during a file load. |
08 | 144 | X’90’ | An invalid pointer was found in an alternate index. While the requested key was found in the alternate index, the associated base record was not found. |
08 | 156 | X'9C' | An internal IAM error was encountered while processing the request. IAM found a record with a length of zero, or reached the end of data within a block unexpectedly. This error could be due to a corrupted buffer in storage. Run an IAMRECVR DIAGNOSE to verify that the file is ok. |
08 | 184 | X’B8’ | I/O request for IAM-RLS either failed or abended. |
08 | 185 | X’B9’ | I/O request for IAM-RLS was rejected because either IAM-RLS was no longer active, or was being paused. |
08 | 189 | X’BD’ | I/O request for IAM-RLS was rejected because the file had been closed under IAM-RLS by operator request. |
08 | 192 | X’C0’ | The program issued a request specifying an invalid relative record number. This can primarily occur if a relative record number of 0. |
08 | 200 | X’C8’ | A control interval request (OPTCD=CNV) is not permitted when reading an ESDS through an alternate index. |
08 | 208 | X’D0’ | A CHECK or an ENDREQ request was issued, however, there was another task waiting on the RPL ECB. |
08 | 225 | X'E1' | Internal IAM error: The buffer pointer in the PLH is 0. |
08 | 241 | X'F1' | A invalid type of request was made, the contents of R0 contains a VSAM request type that IAM does not recognize or support. |
08 | 242 | X'F2' | The ECB address passed in the RPL is invalid. |
08 | 244 | X'F4' | During a file load, the Data Space used to temporarily hold the index was filled. Rerun job with the DATASPACE override, providing a larger value. |
0C | Physical I/O error occurred. Message IAMW37, or IAMW01 should be examined to determine the nature of the error. | ||
0C | 4 | X'04' | An error occurred attempting to READ a data block from DASD. |
0C | 16 | X'10' | An error occurred when IAM was attempting to WRITE a data block to DASD. |