Previous Topic: Reporting

Next Topic: Input Exit

User Exits

This chapter documents the detail linkage conventions for interfacing to five user exits. The general flow of CA JARS products and where these exits fit into that flow were explained in Chapter 1 of this guide.

To accommodate installation accounting and reporting requirements not supported by CA JARS standard features, provision is made for user exit routines to augment or modify the actions normally taken. These user exit routines should be written in Assembler Language. This chapter describes the parameters passed to exit routines at each of the following five phases in processing logic:

Exit routines must reside in a LNKLST library or in the library in which CA JARS resides, as indicated by the STEPLIB DD statement, or in a library concatenated to the STEPLIB DD statement.

It is not necessary to link edit an exit routine with any part of this product. The exit routines are compiled and linked independently. CA JARS uses a late binding technique of exit name specification. This is implemented by permitting exit name specification in the PARMS (input and account exits) and exits (exit-1, exit-2, and exit-3) statements at report program execution time. See the User Guide for the appropriate control statement syntax.

The user exits use standard IBM linkage conventions. Upon entry from CA JARS, the registers are as follows:

Register

Description

15

Address of exit routine's entry point

14

Return address

13

Address of register save area

1

Address of parameter list

The user exit must be coded and assembled using standard assembly language procedures. The following is for illustration purposes only and should be modified according to your installation requirements.

//JOBNAME JOB ,??????,CLASS=?,MSGCLASS=?
//****************************************************************
//* DOC:  This job assembles and links an exit into your loadlib *
//****************************************************************
//STEP1  EXEC PGM=ASMBLR,PARM='DECK,NOOBJECT'
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  DSN=&.&SYSUT1.,UNIT=SYSDA,SPACE=(1700,(600,100))
//SYSUT2   DD  DSN=&.&SYSUT2.,UNIT=SYSDA,SPACE=(1700,(300,50))
//SYSUT3   DD  DSN=&.&SYSUT3.,UNIT=SYSDA,SPACE=(1700,(300,50))
//SYSPUNCH DD DSN=&.&TEMP(????EXIT).,
//            DISP=(NEW,PASS),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=800),
//            UNIT=SYSDA,
//            SPACE=(TRK,(1,1,1))
//SYSLIB   DD DSN=SYS1.MACLIB,DISP=SHR
//         DD DSN=CAI.CAJRSAMP,DISP=SHR
//SYSIN    DD DSN=CAI.youruserlib(????EXIT),DISP=SHR
//*
//LINK1  EXEC PGM=IEWL,PARM='LET,LIST,NCAL,XREF,MAP'
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSN=&.&SYSUT1.,UNIT=SYSDA,SPACE=(1024,(100,10))
//SYSLMOD  DD DSN=your.loadlib,DISP=SHR
//OBJECT   DD DSN=&.&TEMP.,DISP=(OLD,DELETE)
//SYSLIN   DD *
 INCLUDE   OBJECT(????EXIT)
 NAME      ????EXIT(R)
/*

This section contains the following topics:

Input Exit

Account Exit

Exits 1, 2, and 3

Exits on Installation Tape

The Rate Determination Exit (SJEX201)