On 3/30/2012 6:34 AM, Bernd Oppolzer wrote:
The problem is:

We want to call a PL/1 main from an ASSEMBLER test driver environment,
which is already LE enabled, that is, the test driver is an LE enclave.

When we do this using CEEFETCH (which I think is the case at the moment),
all is working well, but the originating enclave is destroyed somehow after 
return.
The symptom is: strange 0C4 abends in the first function prologue after return 
from
the second enclave. We solve this problem temporarily by issuing all subsequent
calls through intermediate PL/1 mains.

The problem does not appear, if we call a PL/1 subprogram this way (which does
not build a new enclave). Then all works OK.

Now the idea was to call the PL/1 main using simple LINK (MVS service), because
the PL/1 main is started at CEESTART and builds its own LE enclave. We hope that
this way the originating enclave is safe.

General question: what is the preferred way for an LE enclave to call or build
another
LE enclave?

Kind regards

Bernd


My notes seem to indicate that using LINK from Assembler to
a PL/I main creates a nested enclave, which I guess is what
you are seeing. I don't see anyway to call a PL/I main without
the main creating an enclave.

I also see this note:

"PL/I fetchable main cannot be dynamically called by COBOL, C,
C++, FORTRAN, nor LE-conforming Assembler"


Perhaps CEEPIPI would work for you? (Apologies if this has
already been suggested.)





Am 29.03.2012 23:28, schrieb Steve Comstock:
On 3/29/2012 3:11 PM, Bernd Oppolzer wrote:
Ok, thank you, you gave me something to think about.
Maybe I should try to call the mains in a different way.
Now my co-worker is off for holidays for three weeks,
I will try to run some tests myself. I'll keep you informed.

The mains are in fact compiled with RENT and DLL options and linked as DLLs;
that is kind of site standard, regardless of program type (sub or main).

But indeed, the opsys calls the mains using ATTACH or LINK, AFAIK,
and maybe I should try to do the same. CEEFETCH is not needed,
because the mains are started at CEESTART and the LE initialization
for the second enclave is performed, anyway.

I've lost the earlier posts in this thread, and I don't
have time now to go back through the archives. But if
you have Assembler using ATTACH or LINK of DLL's, if
the Assembler code is LE-compliant (I think you said it
was), you can invoke DLLs from your Assembler program
using dllload, dllqueryfn, dllqueryvar, or use the
LE service CEEPCALL.

Not sure if exploring these would help, but thought
I'd throw them out there in case you weren't aware
of them.



Kind regards

Bernd


--

Kind regards,

-Steve Comstock
The Trainer's Friend, Inc.

303-355-2752
http://www.trainersfriend.com

* To get a good Return on your Investment, first make an investment!
  + Training your people is an excellent investment

* Try our tool for calculating your Return On Investment
    for training dollars at
  http://www.trainersfriend.com/ROI/roi.html

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN

Reply via email to