Is Execkey=CICS is a requirement for calling ACF00SVA
search cancel

Is Execkey=CICS is a requirement for calling ACF00SVA

book

Article ID: 420597

calendar_today

Updated On:

Products

ACF2 - z/OS

Issue/Introduction

If the CICS assembler program doing ACFSVC call is defined with Execution key value CICS, the SVC call works correct.

The solution seems to be to define the program with Execkey=CICS instead of current value USER. We will have to verify normal operation for all programs calling the assembler program performing the ACF00SVA call.

Is Execkey=CICS is a requirement for calling ACF00SVA 

Environment

Product: ACF2

Resolution

EXECKEY=CICS is not a requirement for calling ACF00SVA. Looking at the compile listing of your program, the problem appears to be related to how the ACMCB storage is allocated during the MUSASS information call (the first ACFSVC call). Since no value is assigned in the ACVSUBPL field, ACF2 defaults to creating the ACMCB in z/OS subpool zero and in key8. Note that storage in this subpool is fetch-protected.
 
When running with STGPROT=YES, your program runs in Key 9 (due to EXECKEY=USER). When you subsequently pass the Key 8 ACMCB to ACFSVC for resource validation while the program is running in Key 9, the request fails because the caller does not have access to read the fetch-protected storage. 
 
The issue can be resolved in two ways:
 

Pass subpool information in the ACVSUBPL field: While making the MUSASS info call to build the ACMCB, explicitly pass subpool information in the ACVSUBPL field. You should choose a subpool that is not fetch-protected (e.g., subpool 230, as shown in the example below).

 
          MVI   ACVSFCN,ACVSMINF           MUSASS INFORMATION REQUEST        
          LA    R7,ACFMSG                  GET MESSAGE AREA ADDRESS          
          ST    R7,ACVMSG                  STORE ADDRESS IN PARMLIST        
          LA    R7,LIDREC                  GET ADDRESS OF LOGONID-REC        
          ST    R7,ACVRECB                 STORE ADDRESS IN PARMLIST        
          LA    R7,LIDLEN                  LENGTH OF LOGONID-RECORD          
          ST    R7,ACVRECL                 STORE LENGTH IN PARMLIST          
          LA    R7,UID                                                      
          ST    R7,ACVUIDB                                                  
          L     R7,=F'24'                                                    
          ST    R7,ACVUIDL                                                  
          MVC   ACVLID(7),COMMLID          MOVE LOGONID TO PARMLIST          
          MVI   ACVSUBPL,230   

 

Set EXECKEY to CICS: Setting the program's EXECKEY to CICS will cause the program to run in Key 8. If the program runs in the same key as the ACMCB storage (Key 8), the access issue is resolved.