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

Reply via email to