> 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
