An Endevor user exit that uses the EPC1UEXT stub is apparently doing nothing. EN$TRXIT trace shows that the module is loaded and called when required, but the exit apparently does nothing and does not eventually update the control blocks passed to it.
How to diagnose this situation?
One possibility would be to add a DISPLAY verb so that the exit issues a message to indicate its presence when it receives control.
The output from DISPLAY verb normally prints to SYSOUT DD. However, DISPLAY 'text' UPON CONSOLE causes the message to print to JESMSGLG so that you can easily see it.
If no message shows up this way, then EPC1UEXT is not calling the COBOL exit. In this case you need to review how the load module is linked:
For example:
//SYSLIN DD *
INCLUDE USREXIT
INCLUDE SYSLIB(EPC1UEXT)
ENTRY EPC1UEXT
NAME C1UEXT02(R)
/*
The PROGRAM-ID of C1UEXTnn is extremely important. The stub will check whether the entry point has been resolved during the binding of the load module and call it only if it is found to be resolved. Otherwise, EPC1UEXT will return to the caller without further action.
You can check whether the C1UEXTnn point is resolved in the cross-reference report of the bind step for the exit load module, which is triggered by option XREF in the binder For example:
1 C R O S S - R E F E R E N C E T A B L E
_________________________________________
TEXT CLASS = B_TEXT
--------------- R E F E R E N C E -------------------------- T A R G E T -------------------------------------------
CLASS ELEMENT | ELEMENT |
OFFSET SECT/PART(ABBREV) OFFSET TYPE | SYMBOL(ABBREV) SECTION (ABBREV) OFFSET CLASS NAME |
| |
230 EPC1UEXT 230 V-CON | C1UEXT01 $UNRESOLVED(W) |
234 EPC1UEXT 234 V-CON | C1UEXT02 C1UEXT02 0 C_CODE |
238 EPC1UEXT 238 V-CON | C1UEXT03 $UNRESOLVED(W) |
23C EPC1UEXT 23C V-CON | C1UEXT04 $UNRESOLVED(W) |
240 EPC1UEXT 240 V-CON | C1UEXT05 $UNRESOLVED(W) |
244 EPC1UEXT 244 V-CON | C1UEXT06 $UNRESOLVED(W) |
26C CEESG004 14 A-CON | IGZEOPT $UNRESOLVED(W) |
270 CEESG004 18 A-CON | IGZETUN $UNRESOLVED(W) |
274 CEESG004 1C A-CON | IGZXRES1 $UNRESOLVED(W) |
In this above example, entry point C1UEXT02 is resolved so EPC1UEXT will call it, but only when Endevor calls it during exit 02 processing.
It's worth to mention that the unresolved weak external references (noted by $UNRESOLVED(W) in the above report) are considered normal by the binder so the final RC is zero so an error in this area could pass unnoticed resulting in a non-operative user exit.