BPE exit list members of the IMS PROCLIB data set

Use the members of the IMS PROCLIB data set specified by the EXITMBR= parameter in the BPE configuration parameter member of the IMS PROCLIB data set to define user exit routines to BPE.

BPE exit list members of the IMS PROCLIB data set are IMS-component specific. In the BPE configuration parameter member of the IMS PROCLIB data set, specify one EXITMBR statement for each IMS component that provides user exit routines through BPE services. Each EXITMBR statement specifies the name of an IMS PROCLIB data set member that contains the definitions for exit routines for that IMS component. You can have a separate exit list member for each IMS component, or you can share one exit list member among several IMS components.

A BPE exit list member associates a user exit routine type with a list of one or more user exit routines. Use the EXITDEF statement to define the exit routine modules to be called for a particular exit routine type. The BPE exit list member is processed by BPE during address space initialization. It is also processed when you enter a REFRESH USEREXIT command (see IMS Version 15.4 Commands, Volume 2: IMS Commands N-V for more information about BPE USEREXIT commands).

Environments

The BPE exit list member of the IMS PROCLIB data set can be used whenever you are using an IMS address space that uses BPE, such as CQS, DBRC, ODBM, OM, RM, SCI, and IMS Connect.

BPE EXITMBR= EXITDEF syntax

You can use the IMS Syntax Checker to modify this member of the IMS PROCLIB data set.

Read syntax diagramSkip visual syntax diagramEXITDEF=(TYPE= type,EXITS=(, exitname),ABLIM= limit,COMP= ims_component)

Usage

The EXITDEF statement associates an exit routine type with a list of one or more exit routine modules to be called. The modules are called in the order listed. The EXITDEF statement consists of a sublist (enclosed in parentheses) containing the keywords TYPE, EXITS, ABLIM, and COMP.

Recommendation: Avoid coding statements in the BPE exit routine list member that specify definitions for the same exit routine type multiple times. BPE always uses the last statement it encounters in the member for a particular exit routine. Any earlier statements for the same exit routine are ignored. Message BPE0017I is issued for each duplicate statement found.

If you code the same user exit routine name more than once in the exit routine list (EXIT=) of any single EXITDEF= statement, BPE always uses the first occurrence of the exit routine module name to determine the order for calling the exit routines. Duplicate names are ignored, and a message, BPE0018I is issued for each duplicate name.

BPE EXITMBR= EXITDEF parameters

TYPE=type
Specifies the type of exit routine. The IMS component defined on COMP= determines the types of exit routines that are supported. Refer to IMS Version 15.4 Exit Routines for more information about these types of exit routines.

BPE exit routine types

All BPE-owned user exit routines are available to all IMS address spaces running with BPE.

INITTERM
An exit routine that is called once during early BPE initialization, and once during normal termination.
STATS
An exit routine that is called periodically (it is timer-driven), and is called once during normal address space shut down, with statistics about BPE system functions. Optionally, the IMS component that is running on BPE can provide statistics specific to its operation.

CQS exit routine types

CLNTCONN
An exit routine that is called during client connect and disconnect processing.
INITTERM
An exit routine that is called during various phases of initialization and termination.
OVERFLOW
An exit routine that is called during overflow threshold processing to select queue names for overflow processing.
STRSTAT
An exit routine that is called during checkpoint processing to allow you to gather structure statistics.
STREVENT
An exit routine that is called for various structure events. For certain structure events, it also allows you to gather structure statistics like the STRSTAT exit routine.

DBRC exit routine types

RECONIO
An exit routine that is called to allow for auditing of DBRC RECON data set I/O. If this exit routine is specified, the standard RECON I/O exit routine, DSPCEXT0, is not called.
REQUEST
An exit routine that is called at start and end of DBRC request processing.
SECURITY
An exit routine that is called to allow user security checking before command execution. If this exit routine is specified, the standard DBRC command authorization exit routine, DSPDCAX0, is called.

IMS Connect exit routine types

ODBMAUTH
IMS Connect DB security user exit, which enables users to access IMS database resources via ODBA from outside an IMS dependent region.
ODBMROUT
IMS Connect Routing exit for ODBM, which enables users to override the IMS alias or to select an ODBM.
PORnnnnn
IMS Connect Port Message Edit exit. nnnnn in the exit type name is the port number in decimal—for example, POR01234. The Port Message Edit exit is a BPE type-2 exit.
XMLADAP
An exit routine that is called to perform XML-to-COBOL data conversion in IMS Connect.

ODBM exit routine types

CLNTCONN
An exit routine that is called during client command registration and deregistration processing.
INITTERM
An exit routine that is called during various phases of initialization and termination.
INPUT
An exit routine that is called to view DL/I calls that are issued to IMS databases. This exit routine can either modify the command before execution or reject the command before it is processed.
OUTPUT
An exit routine that is called to view output (for example, ODBA call output) from ODBM to an ODBM client. The exit routine can modify the output before it is returned to the originator of the command.

OM exit routine types

CLNTCONN
An exit routine that is called during client command registration and deregistration processing.
INITTERM
An exit routine that is called during various phases of initialization and termination.
INPUT
An exit routine that is called to view command input to the Operations Manager. This exit routine can either modify the command before execution or reject the command before it is processed.
OUTPUT
An exit routine that is called to view output (for example, command response) from Operations Manager to an automation client. The exit routine can modify the output before it is returned to the originator of the command.
SECURITY
An exit routine that is called to allow user security checking before command execution.

RM exit routine types

CLNTCONN
An exit routine that is called during client connect and disconnect processing.
INITTERM
An exit routine that is called during various phases of initialization and termination.

SCI exit routine types

CLNTCONN
An exit routine that is called during client connect and disconnect processing.
INITTERM
An exit routine that is called during various phases of initialization and termination.
EXITS=(exitname,...)
Specifies a list of one or more exit routine module names. The position of the exit routine in the list determines the order in which the exit routine is driven. The default order is first to last (the first exit listed on the EXITS= parameter is the first exit to be called). However, for some exit types, the order is reversed (the last exit listed is the first to be called). Exit types that use a reverse call order explicitly state this in their documentation. Refer to IMS Version 15.4 Exit Routines for the specific exit type you are writing to determine the exit call order.
When an exit routine returns to its caller, it indicates whether additional exit routines are to be called.
ABLIM=limit
A number from 0 to 2 147 483 647 that specifies the abend limit for the type of exit routine being defined. If the number of abends for an exit routine module reaches the abend limit for the exit routine type, the module is removed from the exit routine list and is not called until the exit routine type is refreshed.

This parameter is optional; the default is 1. If you specify a value of 0, there is no abend limit.

COMP=ims_component
An optional parameter that specifies the type of the IMS component that owns the exit routine being defined. Possible values are:
BPE
Base Primitive Environment
CQS
Common Queue Server
DBRC
Database Recovery Control
HWS
IMS Connect
ODBM
Open Database Manager
OM
Operations Manager
RM
Resource Manager
SCI
Structured Call Interface
BPE processes only EXITDEF statements that:
  • Do not have COMP coded
  • Have COMP=ims_component coded (where ims_component matches the IMS component specified on the EXITMBR statement that points to the BPE user exit PROCLIB member currently being processed).

    For example, if BPE were processing the BPEEXIT0 PROCLIB member specified on the EXITMBR=(BPEEXIT0,BPE) statement, it would only process EXITDEF statements that had no COMP= specified, and those that had COMP=BPE specified. If BPE were processing the CQSEXIT0 PROCLIB member specified on the EXITMBR=(CQSEXIT0,CQS) statement, it would only process EXITDEF statements that had no COMP= specified, and those that had COMP=CQS specified.

    For any given IMS component address space, BPE only processes BPE user exit PROCLIB members for EXITMBR statements that specify BPE, and those that specify the IMS component name of the address space that is running (for example, CQS, DBRC, HWS, ODBM, OM, RM, or SCI).

Examples

Several sample user exit list members of the IMS PROCLIB data set are provided.

Sample BPE user exit list member of the IMS PROCLIB data set

The sample BPE user exit list member of the IMS PROCLIB data set shown below defines:
  • One BPE init/term exit routine
  • One BPE Statistics exit routine
********************************************************************
* BPE USER EXIT LIST PROCLIB MEMBER                                *
********************************************************************
 
#-----------------------------------------------------------------#
# Define one BPE init/term exit: MYINIT00.                        #
#-----------------------------------------------------------------#
EXITDEF(TYPE=INITTERM,EXITS=(MYINIT00))
 
#-----------------------------------------------------------------#
# Define 1 BPE Statistics exit: HHGSTAT0 with an abend limit of 42#
#-----------------------------------------------------------------#
EXITDEF(TYPE=STATS,EXITS=(HHGSTAT0),ABLIM=42)

#-----------------------------------------------------------------# 
# Define 1 statistics exit for DBRC statistics : STATS01          # 
#-----------------------------------------------------------------# 
EXITDEF(TYPE=STATS,EXITS=(STATS01),COMP=BPE)                        

Sample CQS user exit list member of the IMS PROCLIB data set

The sample CQS user exit list member of the IMS PROCLIB data set shown below defines:
  • One client connection exit routine
  • Two INITTERM user exit routines
  • Four overflow exit routines
  • One structure statistic exit routine
  • One CQS structure event user exit routine
********************************************************************
* CQS USER EXIT LIST PROCLIB MEMBER                                *
********************************************************************
 
#-----------------------------------------------------------------#
# DEFINE 1 CLIENT CONNECTION EXIT: CLCONX00                       #
#---------------------------------------------------------------- #
EXITDEF(TYPE=CLNTCONN,EXITS=(CLCONX00))
 
#-----------------------------------------------------------------#
# DEFINE 2 INITTERM USER EXITS:  MYCQSIT0 AND OEMCQIT0            #
# WITH AN ABEND LIMIT OF 8.
#-----------------------------------------------------------------#
EXITDEF(TYPE=INITTERM,EXITS=(MYCQSIT0,OEMCQIT0),ABLIM=8)
 
#-----------------------------------------------------------------#
# DEFINE 4 OVERFLOW EXITS: OVERFL01, OVERFL02, OVERFL03, OVERFL04 #
#-----------------------------------------------------------------#
EXITDEF(TYPE=OVERFLOW,EXITS=(OVERFL01,
                             OVERFL02,
                             OVERFL03,
                             OVERFL04))
 
#-----------------------------------------------------------------#
# DEFINE 1 STRUCTURE STATISTIC EXIT: STRSTAT0                     #
#-----------------------------------------------------------------#
EXITDEF(TYPE=STRSTAT,EXITS=(STRSTAT0))
 
#-----------------------------------------------------------------#
# DEFINE 1 CQS STRUCTURE EVENT USER EXIT (STREVNT0) WITH          #
# NO ABEND LIMIT                                                  #
#-----------------------------------------------------------------#
EXITDEF(TYPE=STREVENT,EXITS=(STREVNT0),ABLIM=0)

Sample DBRC user exit list member of the IMS PROCLIB data set

The sample DBRC user exit list member of the IMS PROCLIB data set shown below defines:
  • One RECON I/O exit routine
  • An abend limit of 8.
  • Three DBRC security exit routines
/*****************************************************************/
/* DBRC USER EXIT LIST PROCLIB MEMBER                            */
/*****************************************************************/
#-----------------------------------------------------------------# 
# Define 1 DBRC RECON I/O exit: RECONIO1                          #
#-----------------------------------------------------------------# 
EXITDEF(TYPE=RECONIO,EXITS=(RECONIO1),ABLIM=8,COMP=DBRC) 

#-----------------------------------------------------------------# 
# Define 3 DBRC security exits: SECUIRE01, SECURE02, and SECURE03 # 
#-----------------------------------------------------------------# 
EXITDEF(TYPE=SECURITY,EXITS=(SECURE03,SECURE01,SECURE02),COMP=DBRC) 

Sample ODBM user exit list member of the IMS PROCLIB data set

The sample DBRC user exit list member of the IMS PROCLIB data set shown below defines:
  • One ODBM initialization/termination exit routine
  • An abend limit of 8.
  • One ODBM output exit routine
********************************************************************
* ODBM USER EXIT LIST PROCLIB MEMBER                               *
********************************************************************
                                                                    
#-----------------------------------------------------------------# 
# DEFINE 1 ODBM INIT/TERM USER EXIT: ZDINTM00                     # 
#-----------------------------------------------------------------# 
EXITDEF(TYPE=INITTERM,EXITS=(ZDINTM00),COMP=ODBM)                   
                                                                    
#-----------------------------------------------------------------# 
# DEFINE 1 ODBM INPUT USER EXIT: ZINPUT00                         # 
# WITH AN ABEND LIMIT OF 8.                                       # 
#-----------------------------------------------------------------# 
EXITDEF(TYPE=INPUT,EXITS=(ZINPUT00),ABLIM=8,COMP=ODBM)              
                                                                    
#-----------------------------------------------------------------# 
# DEFINE 1 ODBM OUTPUT USER EXIT: ZOUTPUT0                        # 
#-----------------------------------------------------------------# 
EXITDEF(TYPE=OUTPUT,EXITS=(ZOUTPUT0),COMP=ODBM)                     

Sample IMS Connect user exit list member of the IMS PROCLIB data set

The sample IMS Connect user exit list member of the IMS PROCLIB data set shown below defines the XML adapter system routine.

********************************************************************
* HWS USER EXIT LIST PROCLIB MEMBER *
********************************************************************

#-----------------------------------------------------------------#
# Define XML Adapter system routine: HWSXMLA0 #
#-----------------------------------------------------------------#
EXITDEF(TYPE=XMLADAP,EXITS=(HWSXMLA0),ABLIM=8,COMP=HWS) 

Sample OM user exit list member of the IMS PROCLIB data set

The sample OM user exit list member of the IMS PROCLIB data set shown below defines:
  • One OM init/term exit routine
  • Two OM client connection exit routines
  • One OM command input exit routine
  • One OM command output exit routine
  • Three OM security exit routines
********************************************************************
* OM USER EXIT LIST PROCLIB MEMBER                                 *
********************************************************************
 
#-----------------------------------------------------------------#
# Define one OM init/term exit: OMINITRM.                         #
#-----------------------------------------------------------------#
EXITDEF(TYPE=INITTERM,EXITS=(OMINITRM))
 
#-----------------------------------------------------------------#
# Define 2 OM client connection exits: OMCLCN00 and OEMCLI00      #
# with an abend limit of 2.                                       #
#-----------------------------------------------------------------#
EXITDEF(TYPE=CLNTCONN,EXITS=(OMCLCN00,OEMCLI00),ABLIM=2)
 
#-----------------------------------------------------------------#
# Define one OM command input exit: MYCMI000                      #
# with no abend limit.                                            #
#-----------------------------------------------------------------#
EXITDEF(TYPE=INPUT,EXITS=(MYCMI000),ABLIM=0)
#-----------------------------------------------------------------#
# Define one OM command output exit: MYCMO000                     #
# with no abend limit.                                            #
#-----------------------------------------------------------------#
EXITDEF(TYPE=OUTPUT,EXITS=(MYCMO000),ABLIM=0)
 
#-----------------------------------------------------------------#
# Define 3 OM security exits: OMSEC000,OMSEC001, and ZZZSEC00     #
#-----------------------------------------------------------------#
EXITDEF(TYPE=SECURITY,EXITS=(OMSEC000,
                             OMSEC001,
                             ZZZSEC00))

Sample RM user exit list member of the IMS PROCLIB data set

The sample RM user exit list member of the IMS PROCLIB data set shown below defines:
  • One RM init/term exit routine
  • Two RM client connection exit routines
********************************************************************
* RM USER EXIT LIST PROCLIB MEMBER                                 *
********************************************************************
 
#-----------------------------------------------------------------#
# Define one RM init/term exit: RMINITRM.                         #
#-----------------------------------------------------------------#
EXITDEF(TYPE=INITTERM,EXITS=(RMINITRM))
 
#-----------------------------------------------------------------#
# Define 2 RM client connection exits: RMCLCN00 and XYZCLCN0      #
# with an abend limit of 6.                                       #
#-----------------------------------------------------------------#
EXITDEF(TYPE=CLNTCONN,EXITS=(RMCLCN00,XYZCLCN0),ABLIM=6)

Sample SCI user exit list member of the IMS PROCLIB data set

The sample SCI user exit list member of the IMS PROCLIB data set is shown below defines:
  • One SCI init/term exit routine
  • Three SCI client connection exit routines
********************************************************************
* SCI USER EXIT LIST PROCLIB MEMBER                                *
********************************************************************
 
#-----------------------------------------------------------------#
# Define one SCI init/term exit: SCINITRM.                        #
#-----------------------------------------------------------------#
EXITDEF(TYPE=INITTERM,EXITS=(SCINITRM))
 
#-----------------------------------------------------------------#
# Define 3 SCI client connection exits: SCCLCN00, SCCLCN10,       #
# and SCCLCN20 with an abend limit of 9.                          #
#-----------------------------------------------------------------#
EXITDEF(TYPE=CLNTCONN,EXITS=(SCCLCN00,SCCLCN10,SCCLCN20),ABLIM=9)

Sample combined user exit list member of the IMS PROCLIB data set

You can combine all the preceding user exit list members into a single shared member by using the COMP keyword on the EXITDEF statements, as shown below. The sample defines:
  • BPE exit routines
  • CQS user exit routines
  • DBRC user exit routines
  • IMS Connect user exit routines
  • OM user exit routines
  • RM user exit routines
  • SCI user exit routines
*********************************************************************
*  BPE EXIT DEFINITIONS                                             *
*********************************************************************
EXITDEF=(TYPE=INITTERM,EXITS=(MYINIT00),COMP=BPE)
EXITDEF=(TYPE=STATS,EXITS=(HHGSTAT0),ABLIM=42,COMP=BPE)
*********************************************************************
* CQS USER EXIT ROUTINE DEFINITIONS                                 *
*********************************************************************
EXITDEF=(TYPE=CLNTCONN,EXITS=(CLCONX00),COMP=CQS)
EXITDEF=(TYPE=INITTERM,EXITS=(MYCQSIT0,OEMCQIT0),ABLIM=8,COMP=CQS)
EXITDEF=(TYPE=OVERFLOW,EXITS=(OVERFL01,
                              OVERFL02,
                              OVERFL03,
                              OVERFL04),COMP=CQS)
EXITDEF=(TYPE=STRSTAT,EXITS=(STRSTAT0),COMP=CQS)
EXITDEF=(TYPE=STREVENT,EXITS=(STREVENT),ABLIM=0,COMP=CQS)

/*****************************************************************/
/* DBRC USER EXIT LIST PROCLIB MEMBER                            */
/*****************************************************************/
#-----------------------------------------------------------------#
# DEFINE 1 RECON I/O EXIT: ZDBRCIO0                                #
# WITH AN ABEND LIMIT OF 8.                                       #
#-----------------------------------------------------------------#
EXITDEF(TYPE=RECONIO,EXITS=(ZDBRCIO0),ABLIM=8,COMP=DBRC)
#-----------------------------------------------------------------#
# DEFINE 1 DBRC SECURITY EXIT: ZDBRCSE0              #
#-----------------------------------------------------------------#
EXITDEF(TYPE=SECURITY,EXITS=(ZDBRCSE0),COMP=DBRC)

********************************************************************
* HWS USER EXIT LIST PROCLIB MEMBER *
********************************************************************

EXITDEF(TYPE=XMLADAP,EXITS=(HWSXMLA0),ABLIM=8,COMP=HWS) 

*********************************************************************
* OM USER EXIT ROUTINE DEFINITIONS                                  *
*********************************************************************
EXITDEF=(TYPE=INITTERM,EXITS=(OMINITRM),COMP=OM)
EXITDEF=(TYPE=CLNTCONN,EXITS=(OMCLCN00,OEMCLI00),ABLIM=2,COMP=OM)
EXITDEF=(TYPE=INPUT,EXITS=(MYCMI000),ABLIM=0,COMP=OM)
EXITDEF=(TYPE=OUTPUT,EXITS=(MYCMO000),ABLIM=0,COMP=OM)
EXITDEF=(TYPE=SECURITY,EXITS=(OMSEC000,
                              OMSEC001,
                              ZZZSEC00),COMP=OM)

*********************************************************************
* RM USER EXIT ROUTINE DEFINITIONS                                  *
*********************************************************************
EXITDEF=(TYPE=INITTERM,EXITS=(RMINITRM),COMP=RM)
EXITDEF=(TYPE=CLNTCONN,EXITS=(RMCLCN00,XYZCLCN0),ABLIM=6,COMP=RM)

*********************************************************************
* SCI USER EXIT ROUTINE DEFINITIONS                                 *
*********************************************************************
EXITDEF=(TYPE=INITTERM,EXITS=(SCINITRM),COMP=SCI)
EXITDEF=(TYPE=CLNTCONN,EXITS=(SCCLCN00,SCCLCN10,SCCLCN20),ABLIM=9,
         COMP=SCI)

Note: If you use a single shared user exit list member of the IMS PROCLIB data set, change the EXITMBR statements in the BPE configuration member of the IMS PROCLIB data set to point to the shared user exit list member. Here is an example of how you can change the EXITMBR statements:
#
# User exit list PROCLIB member specifications
#
EXITMBR=(SHREXIT0,BPE)              /* BPE user exit definitions  */
EXITMBR=(SHREXIT0,CQS)              /* CQS user exit definitions  */
EXITMBR=(SHREXIT0,OM)               /* OM user exit definitions   */
EXITMBR=(SHREXIT0,RM)               /* RM user exit definitions   */
EXITMBR=(SHREXIT0,SCI)              /* SCI user exit definitions  */