The CSVDYNEX CALL request passes control to the exit routine or
routines associated with an exit that has been explicitly defined
to the dynamic exits facility (that is, that has been defined using
the CSVDYNEX DEFINE request). The caller can: - Specify the information that the exit routine is to find in certain
GPRs at entry
- Receive information from the exit routines in the return area
(RETAREA and RETLEN parameters)
- Receive a token that identifies an exit routine that did not get
control at the exit (NEXTTOKEN).
Additionally, on the CSVDYNEX CALL request you can: - Specify how the system is to handle the return codes from more
than one exit routine (RETINFO parameter)
- Specify that the exit is to have FASTPATH processing (FASTPATH
parameter).
Environment
The requirements for the caller are:
Environmental factor |
Requirement |
---|
Minimum authorization: |
For CALL FASTPATH=YES requests, problem state
and any PSW key. For CALL FASTPATH=NO requests, any of the following: - Supervisor state
- PSW key 0-7
- PKM allowing key 0-7
- APF-authorized (not allowed in cross memory mode)
- SAF READ authority to FACILITY class entity CSVDYNEX.exitname.CALL
(not allowed in cross memory mode)
|
Dispatchable unit mode: |
Task or SRB |
Cross memory mode: |
Any PASN, any HASN, any SASN |
AMODE: |
For CALL with FASTPATH=YES requests, 31-bit. For
all other requests, 24- or 31-bit. |
ASC mode: |
For CALL,FASTPATH=YES, primary mode. For all other
requests, primary or AR mode. |
Interrupt status: |
Enabled for I/O and external interrupts |
Locks: |
The local and CMS locks may be held, but are not
required. |
Control parameters: |
Control parameters and the return area (through
RETAREA) must be in the primary address space or, for AR-mode callers,
must be in an address space or data space that is addressable through
a public entry on the caller's dispatchable unit access list (DU-AL). |
Programming requirements
Include the CSVEXRET mapping macro to get a mapping of the area
provided through the RETAREA parameter. This macro also defines variables
and values for return and reason codes returned by CSVDYNEX. (See z/OS
MVS Data Areas in z/OS Internet Library at http://www.ibm.com/systems/z/os/zos/bkserv/.)
Restrictions
- The FASTPATH parameter is not valid on the modify form of CSVDYNEX
REQUEST=CALL.
- If the caller uses FASTPATH=NO and is in cross memory mode, the
exit routine gets control with the secondary address space equal to
the primary address space of the caller.
- If the caller uses FASTPATH=NO and is in problem state, the caller
must not have SPIE or ESPIE routines in effect.
- FASTPATH=YES is valid on the CSVDYNEX CALL request only if the
CSVDYNEX DEFINE request was issued with FASTPATH=YES.
- The PSW key of the caller must be the same as the value specified
on the KEY parameter of the DEFINE request, or must be 0.
Syntax
The standard form of the CALL request on the CSVDYNEX macro is
written as follows:
Syntax |
Description |
---|
|
|
name |
name: symbol. Begin name in
column 1. |
|
|
␢ |
One or more blanks must precede CSVDYNEX. |
|
|
CSVDYNEX |
|
|
|
␢ |
One or more blanks must follow CSVDYNEX. |
|
|
REQUEST=CALL |
|
|
|
,EXITNAME=exitname |
exitname: RS-type address or
address in register (2) - (12). |
|
|
,RUB=rub |
rub: RS-type address or address
in register (2) - (12). |
|
|
,RETAREA=retarea |
retarea: RS-type address or
address in register (2) - (12). |
|
|
,RETLEN=retlen |
retlen: RS-type address or
address in register (2) - (12). |
|
|
,RETINFO=LAST |
Default: RETINFO=LAST |
,RETINFO=LOWEST |
|
,RETINFO=HIGHEST |
|
,RETINFO=ALL |
|
|
|
,NEXTTOKEN=nexttoken |
nexttoken: RS-type address
or address in register (2) - (12). |
|
|
,FASTPATH=NO |
Default: FASTPATH=NO |
,FASTPATH=YES,WORKAREA=workarea |
|
|
workarea: RS-type address or
address in register (2) - (12). |
|
|
,EXRETVER=0 |
Default: EXRETVER=0 |
,EXRETVER=1 |
|
|
|
,RETCODE=retcode |
retcode: RS-type address or
register (2) - (12). |
|
|
,RSNCODE=rsncode |
rsncode: RS-type address or
register (2) - (12). |
|
|
,MF=S |
|
|
|
Parameters
The parameters are explained as follows:
- REQUEST=CALL
- Calls one or more exit routines at an exit.
- ,EXITNAME=exitname
- Specifies a 16-byte field (or a register containing the address
of a 16-byte field) containing the 16-character name of an exit that
is to invoke one or more exit routines. If the name contains fewer
than 16 characters, left-justify the name and pad the field with blanks.
- ,RUB=rub
- Specifies an area (or a register containing the address of an
area) that is known as the register update block (RUB). The RUB is
a list of fullwords that contains information to be placed in certain
GPRs at entry to each exit routine that gets control at an exit point.
You must obtain storage for the RUB, and initialize it as follows:
- The first two bytes in the first word identify which registers
the system is to load with the data; GPR 0 corresponds to bit 0, GPR
1 corresponds to bit 1, and so on. The last two bytes should be 0.
You indicate the registers by setting the corresponding bits. For
example, if you want the data in GPRs 0, 1, and 13, the first word
is as follows:
- The remaining words in the RUB contain the data that is to be
in the registers, in the order 0 through 15. To continue the example,
the rest of the list would be:
- Second word: xxxx — value in register 0
- Third word: yyyy — value in register 1
- Fourth word: zzzz — value in register 13.
Processing is most efficient when word 0 contains one of
the following: - X'40040000' - indicating registers 1 and 13, or
- X'FFFC0000' - indicating registers 0 through 13.
The RUB area need only be long enough to contain the
necessary information.
If the exit is defined as AMODE=24 or
AMODE=UNDEFINED, do not specify GPR2 in the RUB.
- ,RETAREA=retarea
- Specifies a field (or a register containing the address of a field)
where the system returns information from the exit routines that are
called. The mapping macro CSVEXRET maps this area. (See z/OS
MVS Data Areas in z/OS Internet Library at http://www.ibm.com/systems/z/os/zos/bkserv/.)
- ,RETLEN=retlen
- Specifies a fullword field (or a register containing the address
of a fullword field) that tells the system the length of the RETAREA.
The RETAREA must be long enough to contain at least one return entry.
The size of the RETAREA for n entries is “L'EXRETHDR+n*L'EXRETINFO”.
- ,RETINFO=LAST
- ,RETINFO=LOWEST
- ,RETINFO=HIGHEST
- ,RETINFO=ALL
- Tells the system how to handle return code information when the
exit calls more than one exit routine.
- RETINFO=LAST, the default, indicates that the return area contains
the information from the last exit routine called. If the last exit
routine abnormally ended, its information is placed in the return
area only if it was the only exit routine called. If it was not the
only exit routine called, the information from the most recent exit
routine that did not end abnormally is returned.
- RETINFO=LOWEST indicates that the return area contains the information
from the exit routine whose GPR15 return value was the lowest. (The
system considers the contents of GPR15 as a 4-byte unsigned quantity
for the purposes of this calculation.) If the exit routine abnormally
ends, its information is placed in the return area only if it was
the first exit routine called. That information will be overlaid
by any other exit routine's return information. If multiple exit routines
return with the same lowest value, only the return information from
the first routine will be returned.
- RETINFO=HIGHEST indicates that the return area contains the information
from the exit routine for which the GPR15 return value was the greatest.
(The system considers the contents of GPR15 as a 4-byte unsigned
quantity for the purpose of this calculation.) If the exit routine
abnormally ends, its information is placed into the return area only
if it was the first exit routine called. That information will be
overlaid by any other exit routine's return information. If multiple
exit routines return with the same highest value, the return information
from the first will be returned.
- RETINFO=ALL indicates that information from each exit routine
is returned. If the return area fills completely, the system stops
calling exit routines at that exit and control returns to the caller
for analysis. To invoke the remaining exit routines, the caller can
reissue the CSVDYNEX CALL request, passing the NEXTTOKEN value that
the system returned.
- ,NEXTTOKEN=nexttoken
- Specifies a field (or a register containing the address of a field)
that is both input and output. The contents are an 8-character token
that signifies whether the exit routine has been called.
- If this is the first CALL request for this iteration of the exit,
place zeroes in the field.
- If the field contains a value other than zeroes, the token in
the field signifies that more exit routines remain to be processed
at this exit. The system stores the token in the field during CSVDYNEX
CALL processing, when there is not enough storage in RETAREA to hold
all the information; or during CSVDYNEX RECOVER processing.
- ,FASTPATH=NO
- ,FASTPATH=YES,WORKAREA=workarea
- Specifies whether FASTPATH processing will occur for this CALL
request. On the CSVDYNEX DEFINE request, the FASTPATH keyword enables
the FASTPATH function. On the CSVDYNEX CALL request, it specifies
whether or not to use the function.
- FASTPATH=NO, the default, specifies that FASTPATH processing is
not to occur for this CALL request.
- FASTPATH=YES specifies that FASTPATH processing is to occur for
this CALL request. FASTPATH processing requires that you provide a
recovery routine to handle recovery for CSVDYNEX CALL processing,
and that you issue the CSVDYNEX RECOVER request within that recovery
routine.
WORKAREA= workarea specifies a 512-character
field (or a register containing the address of a field) that is used
by the system to handle recovery of the exit routine. The WORKAREA
parameter is required for FASTPATH processing. The rules for specifying
WORKAREA are: - The work area should be aligned on a doubleword boundary.
- Before you issue the first CSVDYNEX CALL request, zero the first
word of the work area.
- ,EXRETVER=0
- ,EXRETVER=1
- Specifies the format of information to be returned, as mapped
by the DSECTs within the CSVEXRET data area. EXRETVER=1 returns more
information about exit routines than EXRETVER=0.
- EXRETVER=0, the default, specifies that return information is
mapped by the EXRET DSECT.
- EXRETVER=1 specifies that return information is mapped by the
EXRET1 DSECT.
- ,RETCODE=retcode
- Specifies a fullword (or a register) where the system is to store
the CSVDYNEX return code. The return code is also in GPR 15.
- ,RSNCODE=rsncode
- Specifies a fullword (or a register) where the system is to store
the CSVDYNEX reason code. The reason code is also in GPR 0.
- ,MF=S
- Specifies the standard form of the CSVDYNEX macro.
ABEND codes
The CSVDYNEX CALL request with FASTPATH=YES might abnormally terminate
with abend code X'0C4' if you provide a field that is not
accessible. See z/OS MVS System Codes for
an explanation and programmer response.
|