In order to temporarily disable an Endevor user exit, you may happen to try placing a copy of load module IEFBR14 with the same name as the user exit ahead of the real user exit module in STEPLIB DD. This will effectively disable the user exit and is certainly easier than adjusting the user exits table or removing the module from linklist in case it resides there.
However, this practice introduces a SMALL possibility of a S0C4 abend when Endevor loads the module.
The abend would arise at program BSTPMPGM which is part of load module BSTPMOPS
The abending instruction in the symptom dump is D507 Bxxx 9008 (xxx varies depending of the level of program BSTPMOPS)
At the time of the abend, register R9 contains an address ending in FF8. For example, 000C3FF8
When Endevor loads a program, it checks its contents to see whether it contains a particular coremark at offset 8 to decide on further processing
Module IEFBR14 is only 8 bytes long, meaning that, for this module, the above check accesses storage which is beyond the end of the module.
If the module happens to load at the very last 8 bytes of a page, the above check will fall into the next page. If that page is not allocated to the address space, this will cause the S0C4 abend.
Force the module to be page-aligned. This way, it will always load at the start of a page and the above check will never raise a S0C4 abend. For example:
//STEP1 EXEC PGM=IEWL
//SYSPRINT DD SYSOUT=*
//LINKLIB DD DISP=SHR,DSN=SYS1.LINKLIB
//SYSLMOD DD DISP=SHR,DSN=your.loadlib
//SYSIN DD *
INCLUDE LINKLIB(IEFBR14)
PAGE IEFBR14
NAME yourmodule(R)
/*
Note that Endevor only reads the contents of the load module. Therefore there is no risk of any storage overlay.
Sample abend report showing the symptom
16.35.08 JOB35769 +CCSR010E C1SSESTA S0C4 at 000398F0 LMOD BSTPMOPS CSECT BSTPMPGM +001878 <jobname> <stepname> <procstep>
16.35.08 JOB35769 +CCSR021I OWNER = Endevor R19.0
16.35.08 JOB35769 +CCSR022I MODULE = BSTPMPGM FMID = CSIQJ00 RMID = LU09555
16.35.08 JOB35769 +CCSR061I PSW: 00000000 00000000 078D0000 800398F0
16.35.08 JOB35769 +CCSR062I ILC: 06 INTERRUPT CODE: 11
16.35.08 JOB35769 +CCSR067I COMPLETION CODE S0C4 REASON CODE 00000011
16.35.08 JOB35769 +CCSR063I TRANSLATION EXCEPTION ADDRESS: 00000000_000C4800
16.35.08 JOB35769 +CCSR064I DATA AT PSW 000398EA : 50008028 1BFFD507 B2889008 < --- abending instruction CLC X'288'(R11),8(R9)
16.35.08 JOB35769 +CCSR065I HOME = 013F PRIMARY = 013F SECONDARY = 013F
16.35.08 JOB35769 +CCSR070I GR00 - GR01 00000000_2FD17314 00000000_2FD172E8
16.35.08 JOB35769 +CCSR070I GR02 - GR03 00000000_00087848 00000000_0002C250
16.35.08 JOB35769 +CCSR070I GR04 - GR05 00000000_0002C3A4 00000000_00039400
16.35.08 JOB35769 +CCSR070I GR06 - GR07 00000000_00000105 00000000_00084FA8
16.35.08 JOB35769 +CCSR070I GR08 - GR09 00000000_2FD172E8 00000000_000C3FF8 <--- base register R9 pointing at the end of a page
16.35.08 JOB35769 +CCSR070I GR10 - GR11 00000000_80085B1C 00000000_00039F18
16.35.08 JOB35769 +CCSR070I GR12 - GR13 00000000_000398A0 00000000_000878C8
16.35.08 JOB35769 +CCSR070I GR14 - GR15 00000000_800398C0 00000000_00000000
16.35.08 JOB35769 +CCSR071I AR00 - AR03 00000080 00000000 00000000 00000000
16.35.08 JOB35769 +CCSR071I AR04 - AR07 00000000 00000000 00000000 00000000
16.35.08 JOB35769 +CCSR071I AR08 - AR11 00000000 00000000 00000000 00000000
16.35.08 JOB35769 +CCSR071I AR12 - AR15 00000000 00000000 00000000 00000000
A formatted SYSUDUMP for this abend shows that a 8-byte module has loaded at address 000C3FF8, right at the last 8 bytes from a page
0LPA/JPA MODULE
NAME=C1DBBRDG
000C3FE0 1BFF07FE 00000000 * ........*
0LPA/JPA MODULE
NAME=C1BM3000
A page is composed of 4096 contiguous bytes. The addresses in a particular page range from xxxxx000 to xxxxxFFF (in this case, 000C3000 to 000C3FFF).
The second operand 9008 in the abending instruction means '8 bytes after the address pointed to by register 9'.
Adding 8 to the R9 contents 000C3FF8 results in address 000C4000, which is the start of the next page and might cause the S0C4 abend.