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. |
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.