Creating the EEVT control block

IMS creates and initializes the EEVT control block based on information contained in the external subsystem module table (ESMT) that is generated from DFSEMODL macro statements.

The size and subpool for the EEVT storage request are obtained from the ESMT. The EEVT is created in subpool 230 unless subpool 251 is specified in the ESMT. The external subsystem must ensure that the size specified for the EEVT is at least as large as the size indicated in the IMS EEVT mapping.

IMS stores the EEVT address into the EEVTP control block based on an offset specified in the ESMT. The external subsystem must ensure, therefore, that the offset generated in the ESMT (using the DFSEMODL macro) points to the EEVPEEA field in the IMS EEVTP mapping.

IMS does not check whether the EEVT pointer field, EEVPEEA, in the EEVTP is initialized by this process. In fact, the offset in the ESMT could cause IMS to store the address into some other field in the EEVTP designated for some other use, possibly causing a problem. Thus, the external subsystem must ensure that the correct offset is generated into the ESMT.

This process allows the external subsystem to specify another set of modules for IMS to load (IMS would not activate these modules). Both lists of module addresses, one being the EEVT, would be anchored in the EEVTP.

IMS does not use the EEVTLDIR field. Actually more than two sets of modules could be defined in the ESMT (subtables) and loaded by IMS except that there are not enough fields in the EEVTP to anchor the address lists.