This past weekend we upgraded 2 of our systems where we have 2 copies of OPSMVS running (OPSS / OPST). We are having issues with the OPSLOG Archiving process on both OPSS/OPST. I'm initially concerned re: the OPST one. When OPSTARCH is run, we get the below errors:
$HASP373 OPSTARCH STARTED
+OPS0996I ARCHNTRK OPSPRM RC=36, ARCHIVE TRACK BASE SET TO DEFA
+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
OPSTARCH STARTING 1 OPSTARCH OI ---- R1040
OPSTARCH STARTING 2 OPSOSF IKJEFT01 ---- NXEQ
OPSTARCH ---- EOJ
*AOERROR 20221570810 OPSTARCH SYSTEM.OPS#ARCH MAXCC=01040
$HASP395 OPSTARCH ENDED - RC=1040
I rechecked the Security rules and setup and I can't figure out the issue.
Release : 14.0
Component : OPS/MVS
The ARCHSECA security rule was not refreshed after changes were made to the ARCHIVEPROC OPS parm.
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 <====