Loading external subsystem modules
As IMS loads external modules defined in the ESMT, the module addresses are stored in the EEVT.
The module definitions provide the offsets to the locations in the EEVT for the addresses. IMS does not check whether or not required exit routine addresses have been set by the module loading process. If the external subsystem chooses, the ESAP can set exit routine addresses in the EEVT once IMS has passed control to it. For example, the external subsystem can provide multiple exit routines in one load module and have the ESAP set the individual exit routine module addresses.
Whether through module definitions in the ESMT or through ESAP processing, the external subsystem must ensure that the address of an exit routine is present in the EEVT when IMS needs to activate the exit routine. Exit routine addresses must be placed in the EEVT according to the IMS EEVT mapping.
- Exit routines activated in the control and dependent regions:
- Identify
- Initialization
- Terminate Identify
- Exit routines activated only in the control region:
- Command
- Echo
- Resolve Indoubt
- Subsystem Termination
- Exit routines activated only in dependent regions:
- Abort Continue
- Associate Thread
- Commit Continue
- Commit Prepare
- Commit Verify
- Create Thread
- Normal Call
- Signoff
- Signon
- Subsystem Not Operational
- Terminate Thread
In the control region, IMS loads external subsystem modules into the subpools specified in the module definitions. If subpool 251 is specified for a module in dependent regions, IMS loads the module in subpool 251; otherwise, it is loaded in subpool 230.
An external subsystem uses only those exit routines that it needs to communicate with IMS, although some exit routines are required and others are optional. When a required exit routine does not exist, IMS generates an error message when it tries to call the exit routine and terminates the connection with the external subsystem.
If your external subsystem does not need the function that an exit routine is designed to perform, you can write the exit routine so that one exists when IMS calls it but that so no operations are performed. (An exit routine can contain common code, such as SR 15,15 and BR 14 logic, which ESS branches to when the exit routine is called and which does not perform any specific operation.) During processing of the Initialization exit routine, the external subsystem can update the addresses in the DFSEEVT DSECT (from both the control region and dependent regions, if necessary) and point to these exit routines. This action allows IMS to function normally yet not issue error messages and terminate an external connection if an exit routine does not exist.