> It blows me away that LE has to take a perfectly good 0C1, 0C4 or 0C7 and 
> convert it into a U4xxx code.  Not only that, they have to obfuscate the 
> registers.
I have learned (with a lot of scars) that the ZMCH (if you can find that in the 
ceedump) has the actual registers at time of abend, no matter what abend (or 
program check) it was. Unfortunately, no ceedump has a concept of other then 
key8/9 storage or access registers or storage keys. So if you're dealing with a 
'real' PIC4 (not an obvious one where the register in question is either zero 
or characters), you're out of luck unless you can reproduce the problem and get 
a 'real' dump, preferably using the TRAP(OFF) method.

Program checks are mostly indicated in the LE message that informs you of the 
user abend u4039. The number of the message is equal to the program check 
number (don't have an example handy here).
Language Environment Run-Time Messages (SA22-7566) contains the LE user abend 
codes, and for U4039 it is of course the user's fault that the abend code is 
obfuscated:
"The U4039 has been issued because the user has set the TERMTHDACT run-time 
option to request a system dump be generated when an unhandled condition of 
severity 2 or greater has been encountered, and Language Environment will 
terminate."

Program checks are handled by the LE ESPIE routines, which get control before 
slip, so there is no way other than some incantation of TRAP(OFF) to set a slip 
trap on an abend code 0Cx. Later the LE ESTAE gets control and re-issues the 
(now-handled) program check as a user abend. But between the original problem 
and the user abend a lot of processing has taken place.

I used to think that all I need to do is TRAP(OFF) and set a slip trap to get a 
dump, then use "verbx ledata 'ceedump'" to get the calling sequence up to the 
error. Turns out that that will sometimes be different from a ceedump as 
formatted by LE, though.

>Why would it NOT be better to have a User Return Code that explains the single 
>0C1 or 0C4 or OC7 value.   How is that less useful?
Answering only for myself: Because the 'explanation' that LE comes up with is 
wrong in 99% of all cases, and it is really hard to see the storage as it were 
when the abend occured due to too much things having happened since the 
original problem.

Barbara

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to