Ran across that at a client. I believe that the PL/I manuals document that an
LE enabled program cannot call a PL/I MAIN.

On Tue, 27 Mar 2012 18:16:06 +0200 Bernd Oppolzer <[email protected]>
wrote:

:>Hello all,
:>
:>we have a problem that is not easy to describe. Let me try it.
:>
:>We are building a test supporting system, which allows to do tests of 
:>software
:>components. The system consists of the following modules or parts:
:>
:>A - driver, written in ASSEMBLER. The driver builds a LE enclave, so 
:>that it
:>can call C subfunctions and the test objects, which are (normally) PL/1 
:>routines
:>
:>B - driver supporting routine, written in C. This routine provides 
:>services OPEN,
:>WRITE and CLOSE. It is called by the driver. On OPEN, it fetches a 
:>testcase list
:>from the testcase database and builds a linked list in memory (in the LE 
:>heap).
:>It also opens a log file for writing. On WRITE, it writes some protocol data
:>on the log file. On CLOSE, it closes the log file.
:>
:>C - driver exit, written in ASSEMBLER. It is called at the beginning of 
:>the test object
:>(at the entry point) by means of TRAP2 interrupts. It has access to the 
:>testcase list
:>element that B took from the testcase database for the current testcase. 
:>It then calls
:>D, passing the address of the testcase list element. D reads the 
:>testcase data,
:>builds a parameter list for the testcase, and returns a parameter list. 
:>Then the
:>driver exits resumes the test object at the position of the entry point 
:>(this way
:>the test data is passed to the test object).
:>
:>D - is a C routine which reads the data from the testcase data base and 
:>builds the
:>parameter list for the test object - because this is much easier to do 
:>in C than in
:>ASSEMBLER.
:>
:>Now the problem:
:>
:>all works well, if the test object is a PL/1 subroutine and not a main 
:>program. Then
:>the LE enclave built by A is used by B, passed to the test object, and 
:>used by D as well.
:>There is no problem passing the LE environment through the TRAP2 interrupt.
:>
:>But:
:>
:>we also want to be able to test PL/1 main programs this way. The PL/1 
:>main programs
:>are called by the driver the same way as the modules are called, but 
:>because they are
:>started at CEESTART, a second LE enclave below the first enclave is 
:>built. Then C and
:>D run below the second enclave. This is no problem so far, because there 
:>is no need
:>to share ressources between the two enclaves; the only information 
:>exchange is through
:>the testcase list element which belongs to the heap of the first 
:>enclave, and this is no problem,
:>in our opinion.
:>
:>But:
:>
:>when we return from the test object and we try to execute the WRITE call 
:>to B in the
:>first enclave, it fails in the prologue of B.
:>
:>We first thought that reg 12 had not be restored correctly, but this is 
:>not the case.
:>Reg 12 is the same as before the call of the PL/1 main, points to the 
:>original CEECAA.
:>Also, the save area (including NAB etc, the words behind offsets 72) are 
:>unchanged.
:>But still, we get abends 0C4 etc. in the prologue of B. But only in the 
:>PL/1 main case,
:>if there is a second enclave, not in the other case.
:>
:>We fixed this problem by doing the WRITE and CLOSE calls not in the same 
:>(first)
:>enclave as the OPEN call, but instead we did all the subsequent calls by 
:>an intermediate
:>PL/1 main, that is: after the PL/1 test object main destroyed somehow 
:>our first enclave,
:>we didn't use it any more, but instead constructed new enclaves for 
:>every subsequent
:>call at the same level. But this doesn't look very sound to me.
:>
:>My question is: has somebody out there an idea, what has happened here 
:>and what
:>might be a solution to our problem? Is it possible to have one LE 
:>enclave call another
:>and on return from the second still have the first one usable? What are 
:>we getting wrong?
:>
:>Kind regards
:>
:>Bernd
:>
:>----------------------------------------------------------------------
:>For IBM-MAIN subscribe / signoff / archive access instructions,
:>send email to [email protected] with the message: INFO IBM-MAIN

--
Binyamin Dissen <[email protected]>
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel


Should you use the mailblocks package and expect a response from me,
you should preauthorize the dissensoftware.com domain.

I very rarely bother responding to challenge/response systems,
especially those from irresponsible companies.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to