> My question is this: When the address space that contains the XMS
routine
> goes down, my client app crashes with a S0D6(rsn 22). All fine and
dandy,
> but I want this to not happen. I was hoping the try/catch block would
> catch it, but it doesn't.
I am not a C++ programmer but that looks like it ought to work. The
try{} catch{} construct is the right C++ primitive to get what you want.
Are you possibly running with the TRAP(OFF) option? If so, change to
TRAP(ON) and rerun.
Assuming you are not running with TRAP(OFF); my WAG is that, since
catch{} processing is intended to catch exceptions thrown by objects and
abends aren't really handled like that, you might need to insert the
"(...)" ellipsis thingy to tell LE and the complier that you want to
catch anything that has not otherwise been handled. That would look
something like this;
void main(blah blah blah)
{
try { call your assembler logic }
catch (...) { your catch logic }
}
If that doesn't work you would need to dig into the LE and C/C++ books
to figure out how to register a condition handler. But LE has more
arcane rules and knobs than a nuclear reactor so the easiest fix would
be to simply wrap the mainline logic in your assembler program with some
simple recovery. See IEAARR.
CC
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html