ACF2 error ACF99058 (INVALID DSN) during IDCAMS DEFINE ALIAS using the SYMBOLICRELATE parameter
search cancel

ACF2 error ACF99058 (INVALID DSN) during IDCAMS DEFINE ALIAS using the SYMBOLICRELATE parameter

book

Article ID: 6098

calendar_today

Updated On:

Products

ACF2 ACF2 - z/OS ACF2 - MISC

Issue/Introduction

When running an IDCAMS DEFINE ALIAS job with the SYMBOLICRELATE parameter, the job fails with the following ACF2 messages:

ACF99913 ACF2 VIOLATION-08,05,A123456,,USER01.&TSTCHAR..TSTALIAS,N/A
ACF99058 INVALID DSN USER01.&TSTCHAR..TSTALIAS OR LIB SYS1.LINKLIB    
ACF95913  -AMS/CATALOG FUNCTION SUPPRESSED; AUTHORIZATION IS REQUIRED.  

What is causing these errors?

 

 

Environment

Release: R16
Component: ACF2MS

Resolution

ACF2 has it's own catalog validation intercept which performs additional validation that in some cases are not performed by MVS catalog processing. One of those cases for additional validation includes control over the RELATE or SYMBOLICRELATE values when performing an IDCAMS DEFINE ALIAS.

At the time of the DEFINE ALIAS processing, ACF2 makes a call to MVS symbolic translation services to convert the symbolic and then performs a dataset access check to verify the user has access to the translated dataset name. If the symbolic is not defined in MVS, there is not a way for ACF2 to translate it, so ACF2 will then treat the symbolic as a literal when performing the dataset validation. 

ACF2 dataset name validation requires that all dataset name index levels are 8 characters or less and there must be data between periods in the dataset name.

If the user running the DEFINE job has SECURITY or NON-CNCL access or has a PREFIX in the LID record that matches the high-level qualifier of the dataset, this check does not pose a problem because even if the dataset access check fails, access is still granted due to being a privileged user and the DEFINE job will complete successfully.

If the user does not have special privileges within ACF2, the syntax used in the DEFINE ALIAS job will need to conform to these rules:

If the symbolic is not defined in MVS IEASYMxx:

  • Only an 8-character or less symbolic (including the & symbol) can be used.
  • Do not insert an extra period after the symbolic.

    Working example:

    DEFINE ALIAS (NAME(USER01.TSTALIAS) -                   
      SYMBOLICRELATE(USER01.&TSTCHAR.TSTALIAS))

    Becomes USER01.&TSTCHAR.TSTALIAS during the dataset access check. Make sure the user that the DEFINE job is running under has access to this dataset name. 

    Non-working examples:

    DEFINE ALIAS (NAME(USER01.TSTALIAS) -                   
      SYMBOLICRELATE(USER01.&TESTCHAR.TSTALIAS))

    Becomes USER01.&TESTCHAR.TSTALIAS during the dataset access check. &TESTCHAR is greater than 9 characters and therefore is an invalid qualifier.

    DEFINE ALIAS (NAME(USER01.TSTALIAS) -                   
      SYMBOLICRELATE(USER01.&TSTCHAR..TSTALIAS))

    Becomes USER01.&TSTCHAR..TSTALIAS during the dataset access check. There must be at least a 1 character qualifier between periods.

If the symbolic is defined in MVS IEASYMxx:

  • A symbolic greater than 8 characters can be used.
  • There must be an extra period specified after the symbolic in the SYMBOLICRELATE regardless of symbolic length, unless the translated symbolic contains a period at the end.

    Within the IEASYMxx member, the following symbolics are defined:

    SYSDEF SYMDEF(&TSTCHAR='TSTCHAR') 
    SYSDEF SYMDEF(&TESTCHAR='TESTCHAR')

    When listing the symbolics using the /D SYMBOLS command:

    &TESTCHAR.         = "TESTCHAR"
    &TSTCHAR.          = "TSTCHAR"

    Working example:

    DEFINE ALIAS (NAME(USER01.TSTALIAS) -                   
      SYMBOLICRELATE(USER01.&TESTCHAR..TSTALIAS))

    Becomes USER01.TESTCHAR.TSTALIAS during the dataset access validation check.   

    Non-working example:

    DEFINE ALIAS (NAME(USER01.TSTALIAS) -     
      SYMBOLICRELATE(USER01.&TSTCHAR.TSTALIAS))

    Becomes USER01.TSTCHARTSTALIAS during the dataset access validation check. Note that the above syntax was acceptable when the symbolic was not defined to MVS, but becomes invalid after it's defined as the period is treated as part of the symbolic when MVS symbolic translation services is called.


 

 

 

 

 

Additional Information

Details of the IEASYMxx parmlib member where symbolics are defined using the SYMDEF statement can be found in the IBM documentation here:

https://www.ibm.com/docs/en/zos/2.5.0?topic=members-statements-parameters-ieasymxx

Note that to make changes to this member effective, a /SETLOAD xx,IEASYM console command will need to be issued to refresh the member.

To view current symbolics, a /D SYMBOLS console command can be issued.