We are having issues with the OPSLOG Archiving process. When the ARCHPROC procedure run, we get the below errors:
+OPS0996I ARCHNTRK OPSPRM RC=36, ARCHIVE TRACK BASE SET TO DEFAULT
Or
+OPS0996O ARCHNTRK OPSPRM RC=36, ARCHIVE TRACK BASE SET TO DEFAULT.
+OPS8320O OPSLOG (OPSLOG) archive creation completed, MAXRC=0
OPS3851E GLOBAL VARIABLES REQUEST NOT AUTHORIZED - insufficient
+OPS1048I ERROR 48 RUNNING ARCHNADE, LINE 47: FAILURE IN SYSTEM
+OPS1040I ERROR 40 RUNNING ARCHNTRK, LINE 150: INCORRECT CALL T
*AOERROR 20221570810 xxxxxxx SYSTEM.OPS#ARCH MAXCC=01040
$HASP395 OPSTARCH ENDED - RC=1040
Or
$HASP395 OPSARCH ENDED - RC=0012
Release : 14.0
Component : OPS/MVS
The ARCHSECA security rule was not refreshed after changes were made to the ARCHIVEPROC OPS parm.
According to the documentation, the return code 36 for the function OPSPRM is a security error:
OPSPRM Function to SHOW Parameter Values
From the link above:
Returned Values
This function returns one of the following numeric values.
36 An authorization check failed.
1. Go to =4.5.1.
2. Locate the ARCHSECA security rule.
3. Disable the rule, and then re-enable and auto-enable it.
The ARCHSECA rule is used allow the OPSLOG archive proc/STC access to OPS/MVS facilities, such as the OPSPRM() function referenced in the error message:
OPS0996I ARCHNTRK OPSPRM RC=36, ARCHIVE TRACK BASE SET TO DEFAULT
OPSPARM RC=36 indicates that the authorization check failed.
This is due to the PROCNAME static variable getting set in the INIT section of the rule when it is enabled by querying the value of the ARCHIVEPROC OPS parm:
)INIT
IF OPSPRM('SHOW','ARCHIVEPROC') = 0 THEN
DO WHILE QUEUED() > 0
PULL LINE
PROCNAME = STRIP(WORD(LINE,WORDS(LINE)),,"'")
END
ELSE RETURN REJECT
The PROCNAME variable remains set for the duration of the time the rule is enabled.
If the ARCHIVEPROC OPS parm value is added or changed after the rule is enabled, then the ARCHSECA rule should be refreshed to set the PROCNAME variable to the current value of the ARCHIVEPROC parm during rule enablement.
Otherwise, the PROCNAME variable will not match the name of the archive proc that triggered the rule. The rule will return NOACTION and authorization will not be granted:
)PROC
IF SEC.OPAUJBNA = PROCNAME THEN
RETURN "ACCEPT"
ELSE RETURN NOACTION <====
Another possible solution in case the OPS/MVS instance has external security enabled:
If you are using OPS/MVS External Security (that is, the EXTSECURITY parameter is set to ON), update your External Security Manager (ESM) rules for the following OPS/MVS security event resources to permit access by the user ID assigned to the archive STC, where OP$MVS is the value of the EXTSECPREFIX parameter:
- UPDATE access to resource OP$MVS.OPSPARM
- READ access to resource OP$MVSOPSLOG
- UPDATE access to resource OP$MVSOPSGLOBAL.stem
stem
The value of the ARCHIVETRACKBASE parameter.