z/OS MVS Programming: Authorized Assembler Services Reference ALE-DYN
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Call one or more exit routines at an exit

z/OS MVS Programming: Authorized Assembler Services Reference ALE-DYN
SA23-1372-00

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

  1. The FASTPATH parameter is not valid on the modify form of CSVDYNEX REQUEST=CALL.
  2. 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.
  3. If the caller uses FASTPATH=NO and is in problem state, the caller must not have SPIE or ESPIE routines in effect.
  4. FASTPATH=YES is valid on the CSVDYNEX CALL request only if the CSVDYNEX DEFINE request was issued with FASTPATH=YES.
  5. 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.

Input register information

See Input register information for CSVDYNEX for input register information for the CSVDYNEX CALL request.

Output register information

See Output register information for CSVDYNEX for output register information for the CSVDYNEX CALL request.

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:
    • X'C0040000'
  • 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.

Return and reason codes

See Return and reason codes for the return and reason codes for the CSVDYNEX CALL request.

Example

See three examples of calling exit routines at an exit, in Example 3, Example 4, and Example 5.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014