Your ACS installation exit routine can use the ACS interface routine to
call an ACS routine. The ACSPACS field shown in Figure 1 contains
the address of an ACS interface routine that calls the corresponding
ACS routine for the SMS class being selected. If the ACSPACS field
contains a zero, then no ACS routine exists for the SMS class.
The return code is in register
15. If it is nonzero, the reason code is found in register 0.
Linkage is that of standard MVS linkage conventions. Figure 1 illustrates the parameter structure for the ACS interface
routine.
The parameter
list for the ACS interface routine, ACSPACSP, is imbedded within the
parameter list that is passed to the exit.
ACERWVLN and ACERWVAL fields zero.
Figure 1. Parameter Structure
for the ACS Interface Routine. This figure shows the control block
structure for calling the ACS interface routine from the installation exit.
ACSPACSP contains the following fields:
- ACSPAERO
- Points to a list of variables mapped by IGDACERO that are read-only
variables used by the ACS interface routine. Initially, ACSPAERO points
to the same list of read-only variables as ACSPERO. You can modify
the passed variables pointed to by ACSPAERO and call the ACS routine.
Or you can write the ACS exit routine to create an entirely new list
of read-only variables for the ACS interface routine and point to
them with ACSPAERO before calling the ACS routine.
- ACSPAERW
- Points to a list of read-write variables mapped by IGDACERW
and used by the ACS interface routine. Initially, ACSPAERW contains
the same value as ACSPERW, which is a pointer to a list of read-write
variables that contain the original value for the SMS class that was
assigned in the ACS routine.
You can call the ACS routine without
changing the value in ACSPAERW. When the ACS routine runs, it replaces
the values in the list pointed to by ACSPAERW with new values for
the SMS class derived by the ACS routine and any messages generated
by the ACS routine.
When your ACS installation exit routine returns
control to ACS services, the SMS class contained in the list pointed
to by ACSPERW is assigned to the data set.
Because ACSPERW and ACSPAERW are pointing to the same list,
the class that is assigned to the data set is the new class that is
created when your exit routine calls the ACS routine. However, if
the new class is to be used as the input class by the ACS routine,
then it must be copied into the corresponding field in ACSPAERO from
ACSPAERW.
You can also write your ACS exit routine to create
an entirely new list of read-write variables and point to them with
ACSPAERW before calling the ACS routine. After the ACS routine runs,
the read-write variable list pointed to by ACSPAERW contains the new
values derived by the ACS routine. The read-write variable list pointed
to by ACSPERW contains the original values that are assigned by the
ACS routines. By creating a new read-write variable list in your exit
routine, and then calling the ACS routine, you can compare the original
values, pointed to by ACSPERW, with the ne values, pointed to by ACSPAERW.
If
you create a new list of read-write variables and call the ACS routine,
and you want to have the new values that are pointed to by ACSPAERW
used to assign a class, you must copy the new values
into the original list of variables,pointed to by ACSPERW.
If you omit this copying step, the new values are not used
to assign a class.
A zero in the ACERWNCS field upon return
from the ACS routine indicates there is a null value for the
SMS class. To assign a null value to the SMS class, you must set the
ACERWNCS field to one and leave the ACERWVLN and ACERWVAL fields zero.