Description:
High-level language Endevor user-exits can be linked with the EPC1UEXT stub. This technote describes it's basic function.
Solution:
Non-package Endevor User-Exits, are called with R1 pointing to an address list as described in the diagram on the second page of Chapter 3: Using Exit Control Blocks, in the Exits Guide (Page 44 in V15).
This would then in COBOL translate to the following 'USING' clause in the exit:
PROCEDURE DIVISION USING EXIT-CONTROL-BLOCK
SRC-ENVIRONMENT-BLOCK.
This exit-program will then need to use the ECB-REQUEST-POINTER to address the REQUEST-INFO-BLOCK.
Similarly it will need the SRC-ENV-NEXT-ENV-POINTER to address the TGT-ENVIRONMENT-BLOCK, if it for example, concerns a MOVE in an EXIT02.
To help avoid the need for above addressing logic, one can link a high-level language exit with EPC1UEXT, as provided in the Endevor hlq.CSIQLOAD, and use that as an ENTRY point in the link.
See the topic 'Exits and High-Level Languages' in the Exits manual also.
The function of EPC1UEXT is to set up all relevant exit control blocks in a parameter list, and pass these to the high level language exit.
Given that a COPY EXITBLKS is present in the LINKAGE SECTION, the EPC1UEXT presence will for a COBOl exit then require the following 'USING' clause:
PROCEDURE DIVISION USING
EXIT-CONTROL-BLOCK
REQUEST-INFO-BLOCK
SRC-ENVIRONMENT-BLOCK
SRC-ELEMENT-MASTER-INFO-BLOCK
SRC-FILE-CONTROL-BLOCK
TGT-ENVIRONMENT-BLOCK
TGT-ELEMENT-MASTER-INFO-BLOCK
TGT-FILE-CONTROL-BLOCK.
Above 'USING' is relevant for all the numbered user-exits(except EXIT07's), however whether the content of a particular control block is to be used, depends on the context(exit#), and action for which it is called (see the diagram mentioned above).
For example an exit04 called for an ADD, will have a SRC-FILE-CONTROL-BLOCK passed , but the SRC-ELEMENT-MASTER-INFO-BLOCK will not contain valid data.