Return codes from the record-management (request) macros
After a request macro or a CHECK or ENDREQ macro is issued, register 15 contains a return code.
After an asynchronous request to access a data set, VSAM indicates in register 15 whether the request was accepted, as Table 1 shows.
| Return code | Description |
|---|---|
| 0(X'00') | Request was accepted. |
| 4(X'04') | Request was not accepted because the request parameter list indicated by the request (RPL=address) was active for another request. |
| 16(X'10') |
|
After a synchronous request, or a CHECK or ENDREQ macro, register 15 indicates whether the request was completed successfully, as Table 2 shows.
| Return code | Description |
|---|---|
| 0(X'00') | Request completed successfully. |
| 4(X'04') | Request was not accepted because the request parameter list indicated by the request (RPL=address) was active for another request. |
| 8(X'08') | Logical error; specific error is indicated in the feedback field in the RPL. |
| 12(X'0C') | Physical error; specific error is indicated in the feedback field in the RPL. |
| 16(X'10') |
|
The feedback area of the request parameter list (RPL) contains additional diagnostic information that is used with the return codes in register 15 to determine the cause of an error.
- Byte0 Problem determination code
- Byte1 RPL return code (same as register 15)
- Byte2 Component code
- Byte3 Reason code
VSAM does not branch to an exit routine when register 15 is 0 on return from a request. The list in Table 3 describes the reason codes that might be in the RPL feedback area when register 15 is 0.
| RPLRTNCD code | Condition |
|---|---|
| 0(X'00') | Request completed successfully. |
| 4(X'04') | Request completed successfully. For retrieval, VSAM mounted another volume to locate the record; for storage, VSAM allocated additional space or mounted another VSAM EOV was called. |
| 8(X'08') | For GET requests, indicates that a duplicate key follows; for PUT requests, indicates that a duplicate key was created in an alternate index with the nonunique attribute. |
| 12(X'0C') | (Shared resources only.) A buffer needs to be written. |
| 16(X'10') | Control area split was required because a sequence set control interval had free space insufficient to contain the key to be inserted. |
| 24(X'18') | Buffer found but not modified: no buffer writes performed. |
| 28(X'1C') | A CI split for the CI was interrupted. The CI was read as non-update with address access. This warning condition indicates that duplicate data records may exist. The RBA for this CI can be acquired from RPLDDDD for non-extended-addressable data sets or from the lower six bytes of RPLRBAR for an extended-addressable data set. |
| 32(X'20') | Possible causes:
|
| 36(X'24') | Possible data set error condition was detected
by TERMRPL:
|
| 40(X'28') | Error in PLH data BUFC pointer was detected by TERMRPL. |
| 43(X'2B') | EOV called to retrieve or update the dictionary token in the catalog for a compressed data set. |
| 44(X'2C') | EOV called to update catalog statistics. |
See the following discussions for the logical-error and physical-error return codes.