Here is a question for the masses. I am calling a PC routine from C++. The
C++ and assembly code snippets are at the end.
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. Does anyone know what recovery routine options I have to
trap this and recover? What I want to do is wait for the XMS address space
to come back, then continue.
Thanks!
David Logan
The C++ code is:
try
{
rc=CallPC(data.lx_value,
1, handle, block_number, dest_buffer,
data.data, workarea, &ecb, ascb);
} catch(...)
{
printf("DANGER!\n");
rc = 0;
};
The assembler code that is executed when CallPC is executed is:
CALLPCR CSECT
CALLPCR AMODE 31
CALLPCR RMODE ANY
EDCPRLG
L 14,0(,1)
L 14,0(,14) LXVALUE IN R1 (PC VALUE)
LA 1,4(,1) POINT PARMLIST PAST LXVALUE
PC 0(14)
EDCEPIL
----------------------------------------------------------------------
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