Return and reason codes

R_datalib might return one of several values as the SAF and RACF® return and reason codes. This topic defines the return codes that can be returned by any of the functions. In addition, each function of R_datalib has its own unique set of return codes, which are also listed in this topic.

Table 1. R_datalib return and reason codes
SAF return code RACF return code RACF reason code Explanation
0 0 0 The service was successful.
4 0 0 RACF is not installed.
8 8 4 Parameter list error occurred. Attributes were not specified as 0 or the last word in the parameter list did not have the higher order bit on.
8 8 8 Not RACF-authorized to use the requested service.
8 8 12 Internal error caused recovery to get control.
8 8 16 Unable to establish a recovery environment.
8 8 20 Requested Function_code not defined.
8 8 24 Parm_list_version number not supported.
8 8 28 Error in Ring_name or RACF_userid parameter (Note: Ring_name value is case sensitive).
8 8 72 Caller not in task mode.
8 8 92 Other internal error.
8 8 96 The linklib (steplib or joblib) concatenation contains a non-APF authorized library.
8 12 0x00xxyyyy An unexpected error is returned from ICSF. The hexadecimal reason code value is formatted as follows:
  • xx - ICSF return code
  • yyyy - ICSF reason code
Function-specific return and reason codes for DataGetFirst and DataGetNext:
Table 2. DataGetFirst and DataGetNext return and reason codes
SAF return code RACF return code RACF reason code Explanation
8 8 32 Length error in attribute_length, Record_ID_length, label_length, or CERT_user_ID.
8 8 36 dbToken error. The token may be zero, in use by another task, or may have been created by another task.
8 8 40 Internal error while validating dbToken.
8 8 44 No certificate found with the specified status. Start of changePossible causes are an empty keyring or there is no certificate in the keyring that matches the specified criteria. This return and reason code is also issued when a DataGetNext function is called and there are no more certificates in the keyring.End of change
8 8 48 An output area is not long enough. One or more of the following input length fields were too small: Certificate_length, Private_key_length, or Subjects_DN_length. The length field(s) returned contain the amount of storage needed for the service to successfully return data.
8 8 52 Internal error while obtaining record private key data.
8 8 56 Parameter error - Number_predicates, Attribute_ID or Cert_status
8 8 80 Internal error while obtaining the key ring or z/OS® PKCS #11 token certificate information or record trust information.
8 8 84 The key ring profile for RACF_user_ID/Ring_name or z/OS PKCS #11 token is not found, or the virtual key ring user ID does not exist.
Function-specific return and reason codes for DataAbortQuery:
Table 3. DataAbortQuery return and reason codes
SAF return code RACF return code RACF reason code Explanation
8 8 36 dbToken error. The token might be zero, in use by another task, or might have been created by another task.
8 8 40 Internal error while validating dbToken.
Function-specific return and reason codes for CheckStatus:
Table 4. CheckStatus return and reason codes
SAF return code RACF return code RACF reason code Explanation
0 0 0 Certificate is trusted or certificate not registered with RACF.
8 8 60 Internal error - Unable to decode certificate.
8 8 64 Certificate is registered with RACF as not trusted.
8 8 68 Parameter error - zero value specified for Certificate_length or Certificate_ptr.
Function-specific return and reason codes for GetUpdateCode:
Table 5. GetUpdateCode return and reason codes
SAF return code RACF return code RACF reason code Explanation
8 8 84 The key ring profile for RACF_user_ID/Ring_name or z/OS PKCS #11 token is not found, or the virtual key ring user ID does not exist.
8 8 88 Internal error - Unable to obtain the key ring or the z/OS PKCS #11 token data.
Function-specific return and reason codes for IncSerialNum:
Table 6. IncSerialNum return and reason codes
SAF return code RACF return code RACF reason code Explanation
0 0 0 Success, serial number returned.
8 8 76 Certificate is invalid.
8 8 80 Certificate is not installed or is marked NOTRUST, or does not have a private key.
8 8 84 Parameter error. A zero value was specified for one of the following parameters:
  • a certificate length or certificate owned by another user.
  • a minimum serial number.
Function-specific return and reason codes for NewRing:
Table 7. NewRing return and reason codes
SAF return code RACF return code RACF reason code Explanation
8 8 32 The profile for Ring_name is not found for REUSE.
8 8 36 The profile for Ring_name already exists. REUSE was not specified.
8 8 40 The Ring_name is not valid.
8 8 44 The RACF_user_ID is not valid or not found.
Function-specific return and reason codes for DataPut:
Table 8. DataPut return and reason codes
SAF return code RACF return code RACF reason code Explanation
4 4 0 Success but the certificate’s status is NOTRUST.
4 4 4 Success but the DIGTCERT class needs to be refreshed to reflect the update.
4 4 8 Success but the Label information is ignored because the certificate already exists in RACF.
4 4 12 Success but the Label information is ignored because the certificate already exists in RACF, and its status is NOTRUST.
4 4 16 Success but the Label information is ignored because the certificate already exists in RACF, and the DIGTCERT class needs to be refreshed to reflect the update.
8 8 32 Parameter error - incorrect value specified for Certificate_length or Certificate_ptr, or the label area is too small.
8 8 36 Unable to decode the certificate.
8 8 40 The private key is neither of a DER encoded format nor of a key label format.
8 8 44 Bad encoding of private key or unsupported algorithm or incorrect key size.
8 8 48 The specified private key does not match the existing private key.
8 8 52 Cannot find the key label.
8 8 56 ICSF error when trying to find the key label.
8 8 60 Not authorized to access ICSF key entry.
8 8 64 The specified certificate label already exists in RACF.
8 8 68 The user ID specified by CERT_user_ID does not exist in RACF.
8 8 76 The certificate cannot be installed.
8 8 80 The certificate exists under a different user.
8 8 84 Cannot find the profile for Ring_name.
Function-specific return and reason codes for DataRemove:
Table 9. DataRemove return and reason codes
SAF return code RACF return code RACF reason code Explanation
4 4 0 Success to remove the certificate from the ring but cannot delete the certificate from RACF because it is connected to other rings.
4 4 4 Success but cannot delete the certificate from RACF because of an unexpected error.
4 4 8 Success but cannot delete the certificate from RACF because of insufficient authority.
4 4 12 Success but the DIGTCERT class needs to be refreshed to reflect the update.
4 4 16 Success to remove the certificate from the ring but cannot delete the certificate from RACF because it is has been used to generate a request.
8 8 32 Parameter error – incorrect value specified for Label_length, Label_ptr or CERT_user_ID.
8 8 36 Cannot find the certificate with the specified label and owner ID.
8 8 40 The profile for Ring_name is not found.
8 8 44 Cannot delete the certificate from RACF because it is connected to other rings.
8 8 48 Cannot delete the certificate from RACF because it is has been used to generate a request or its associated private key no longer exists in the PKDS or TKDS.
Function-specific return and reason codes for DelRing:
Table 10. DelRing return and reason codes
SAF return code RACF return code RACF reason code Explanation
8 8 32 The profile for Ring_name is not found.
Function-specific return and reason codes for DataRefresh:
Table 11. DataRefresh return and reason codes
SAF return code RACF return code RACF reason code Explanation
4 4 0 The refresh is not needed.
Function-specific return and reason codes for DataAlter:
Table 12. DataAlter return and reason codes
SAF return code RACF return code RACF reason code Explanation
4 4 0 Success but the requested HIGHTRUST status is changed to TRUST since the certificate does not belong to CERTAUTH
4 4 4 Success but the DIGTCERT class needs to refresh to reflect the update
4 4 8 Success but the requested HIGHTRUST status is changed to TRUST since the certificate does not belong to CERTAUTH, and the DIGTCERT class needs to refresh to reflect the update
8 8 32 Parameter error - invalid value specified for Label_length, Label_ptr, New_Label_length or New_Label_ptr
8 8 36 Certificate not found
8 8 40 New certificate label specified already exists in RACF for this user
8 8 44 User ID specified by CERT_user_ID does not exist in RACF
Function-specific return and reason codes for GetRingInfo:
Table 13. GetRingInfo return and reason codes
SAF return code RACF return code RACF reason code Explanation
4 4 0 There are more rings to be returned.
4 4 8 There are more rings that satisfy the searching criteria, but can not be returned due to insufficient authority.
8 8 32 No ring found.
8 8 36 Parameter error - invalid value specified
8 8 40 The output area is too small for 1 set of result. The Ring_result_length returned contains the amount of storage needed.
8 8 44 User ID specified by RACF_user_ID does not exist in RACF
8 8 48 The ring specified as the search criteria for other rings is not found
Note: For search type 0 which is used for getting ring information for a specific ring, if insufficient authority is granted, 8 8 8 will be returned. For other search types which are used for getting ring information for multiple rings, only the authorized entries will be returned, with return/reason code 4 4 8.