U4088-63 abend calling Endevor ENBP1000 utility from a COBOL program
search cancel

U4088-63 abend calling Endevor ENBP1000 utility from a COBOL program


Article ID: 257882


Updated On:




In past releases, it was possible to call endevor utilities ENBP1000 (batch package handling) and ENBE1000 (batch environment maintenance) via CALL statement from a COBOL program.

This is no longer possible after fix RO99458 which was published during the life of release 18.0 to remove the SAS/C runtime environment from endevor.

After this fix is applied, whenever a COBOL program tries to call ENBP1000 or ENBE1000 utilities, it gets an abend U4088-63 which originates in IBM's Language Environment (LE)


Release : 19.0


To remove SAS/C runtime from Endevor, these utilities  were recompiled with the IBM XL C++ compiler which, like IBM COBOL, requires IBM Language Environment runtime.

However, even though most of the logic for ENBx1000 utilities is written in C, they start with some levels of prolog assembler routines which are not intended to be run under LE. Later on, these routines start a LE-conformant main program (via CEEENTRY macro) to run the C portion of the code.

CEEENTRY macro causes LE to initialize a routine. This poses no problem when the utility is run from JCL as this causes a new LE enclave to be initialized.

However, when the utility is called from an LE enclave like a COBOL program, LE tries to run the new routine as a subroutine of the existing enclave.

Since the prolog routines do not properly maintain the LE stack of called routines (they only maintain the stack of MVS saveareas), LE cannot initialize a new routine on top of this stack (which, as per the LE criteria, is corrupted) and raises abend U4088-63.

The exact cause of the abend can be observed in a dump by formatting the LE DSAs created by the non-LE routines. Field NAB (Next-Addressable Byte) contains garbage.


After fix RO99458, it is not possible to call ENBx1000 utilities directly from a COBOL program .