What it means
U4039 is issued by Language Environment (LE) when a severe error has occurred and the run-time options ask for a CEEDUMP, and possibly a system dump as well. Like U4038, it is a wrapper: it tells you LE ended the run, not why.
If the program fails very early, before its own recovery is set up, LE's recovery can catch the original abend and report it as U4039, which hides the first error. Depending on run-time options, LE may instead reissue the original abend code.
Typical causes
- Any severe run-time error that LE did not let the program handle, such as a program check.
- An abend inside the application during start-up, before its own recovery was in place.
- In IBM's note for one product (Connect:Direct) failing at start-up, the most common cause was a region too small.
- In the same note: LE run-time libraries such as CEE.SCEERUN missing from STEPLIB or the link list.
- In the same note: no OMVS segment for the user ID the program runs under.
How to fix it
- Search the job output for CEE and IGZ messages and read the first severe one.
- Use the CEEDUMP traceback to find the failing routine, the condition and the registers.
- Look for an earlier abend code in the job log that U4039 may be hiding.
- If it fails at start-up, check REGION, the STEPLIB concatenation for the LE run-time libraries and the user ID's OMVS segment.
- If a system dump was taken, format it with the IPCS LEDATA command.
Example
Illustrative only; names and values are invented.
IEF450I CUSTJOB1 STEP030 - ABEND=S000 U4039 REASON=00000000