z/OS Communications Server: SNA Programming
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


EXLST exit routines

z/OS Communications Server: SNA Programming
SC27-3674-00

This type of exit routine differs from the RPL exit routine in that it is a special-purpose exit routine. The special purpose is understood by both the VTAM® application program and VTAM. Instead of being specified in a particular RPL-based macroinstruction request, the identity of an EXLST exit routine is established only when the exit list in which its name is specified is identified to VTAM, either when the program is opened or, for certain types of exit routines, when a session is established. In general, EXLST exit routines are special-purpose exit routines, entered only when a somewhat unusual event occurs, such as the VTAM operator's issuance of a HALT command to shut down the network.

Here is how EXLST exit routines work:

  1. A VTAM application program contains a number of exit routines written for different purposes (for example, a LOGON exit routine and a TPEND exit routine).
    PICTURE
  2. The program names the special-purpose exit routines and puts their names in an exit list. The exit list is created with the EXLST macroinstruction. Each exit-routine name is specified with an appropriate VTAM-provided keyword, such as LOGON and TPEND.
    PICTURE
  3. This exit list, identified by the name of the EXLST macroinstruction, can be specified in the EXLST operand of the program's ACB. When the ACB is opened, the list of exit routines becomes available to VTAM.
    PICTURE
  4. Alternatively, certain types of exit routines—DFASY, SCIP, and RESP—can be listed in the EXLST macroinstruction specified in the EXLST operand of the NIB that is used when a session is established. After the session is established (that is, after OPNDST or OPNSEC has been completed), VTAM uses an exit routine identified in the NIB exit list in preference to the corresponding exit routine specified in the ACB exit list. The preference applies only for the session. If an appropriate exit routine is not in the exit list established for the session, VTAM looks in the ACB-specified exit list that is specified when the ACB is opened. (For more qualifying details, see Specifying the DFASY, RESP, and SCIP exit routines in an ACB or NIB.) An NIB EXLST cannot be altered or freed until the last session using it terminates. An ACB EXLST cannot be altered or freed until the ACB is closed.
    PICTURE
  5. When an event occurs for which a related EXLST exit routine exists, VTAM schedules the appropriate exit routine, using the exit routine provided in EXLST. As soon as no other asynchronous exit routine is being executed, the EXLST exit routine is given control (if necessary, interrupting the mainline portion of the program). As described in TPEND exit routine, the TPEND exit routine, with reason code 8, is handled in a special way.
Note: The scheduling of the LOGON exit (for CINITs) or SCIP exit (for BINDs) can be delayed by using the SETLOGON macroinstruction.

 

PICTURE

When the ACB opens, control is given to an asynchronous EXLST exit routine in the addressing mode of the application program. (Asynchronous EXLST exit routines include all EXLST exit routines except SYNAD and LERAD.)

When VTAM gives control to an asynchronous EXLST exit routine, the routine usually cannot be interrupted even though other pending events are completed; the exit routine must return control to VTAM before VTAM can give control to other parts of the application program, including other EXLST or RPL exit routines that VTAM might have scheduled. However, when the following special conditions occur, another asynchronous exit routine can be given control before the currently running EXLST exit routine completes:
  • A LERAD or SYNAD exit routine can be entered if an error or special condition occurs for an RPL-based request that either is issued and not accepted in the asynchronous EXLST exit routine or is checked in the asynchronous EXLST exit routine.
  • An asynchronous EXLST exit routine can be interrupted to allow the TPEND exit routine to be entered with reason code 8.
  • An application program can use certain operating system facilities (multiple tasks, and SRBs) to allow the application program to have several parts that can run concurrently.

See Operating system facilities for more information about the LERAD, SYNAD, and TPEND exit routines and SRBs.

The SYNAD and LERAD exit routines, called inline exit routines, obey different rules than the asynchronous EXLST exit routines. SYNAD and LERAD operate under the same operating system scheduling control block (for example, a TCB or SRB) as the part of the program that issued the RPL-based or CHECK macroinstruction whose issuance caused the SYNAD or LERAD exit routine to be invoked. Thus, SYNAD and LERAD operate essentially as extensions to that part of the program, and are subject to exactly the same interruption conditions as that part of the program.

When the application program issues CHECK, the SYNAD and LERAD exit routines are entered in the addressing mode of the application program. For requests with OPTCD=SYN, the addressing mode is in the same mode as the application program that issued the original request.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014