OPS0996I ARCHNTRK OPSPRM RC=36
search cancel

OPS0996I ARCHNTRK OPSPRM RC=36

book

Article ID: 243434

calendar_today

Updated On:

Products

OPS/MVS Event Management & Automation

Issue/Introduction

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.

 

Environment

Release : 14.0

Component : OPS/MVS

Cause

The ARCHSECA security rule was not refreshed after changes were made to the ARCHIVEPROC OPS parm.

Resolution

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