To be completely accurate, we are developing a new component for an existing product. The existing product is written entirely in Assembler and is not compatible with LE. I would love to not use CEEPIPI, but that's a non-starter. The new component needs to use a couple of APIs that are only provided in C and C++ and require LE. Were it not for the LE requirement, we would have used someone else's C/C++ compiler/library that plays more nicely with Assembler.

I suspect that your suggestion of init_sub_dp, start_seq, call_sub, and end_seq will still get the same behavior in some cases, e.g., an abend in the driving program anywhere between two start_seq and end_seq. In that case, we would just be reconfiguring the problem, not really fixing it.



Steve Comstock wrote:
Gord Tomlin wrote:
Definitely, the key item is the meaning of "dormant". Clearly, the environment "exists" until it is destroyed by the term call. The question is what should happen when the environment exists but is dormant.

IBM states in the description of init_sub that it "sets the environment dormant so that exceptions are percolated out of it." The issue is whether it is correct for the LE recovery routines to alter the abend information for an abend that occurs while the environment is dormant. Since it is a documented that callers of CEEPIPI not be LE compliant, it is illogical for LE to alter the abend information for an abend that occurs in this non LE-compliant environment.

The idea of terminating the environment after every subroutine eliminates one of the main benefits of using CEEPIPI, that being the avoidance of the overhead of creating and destroying the LE environment around every subroutine call.


[snip old stuff]

A couple of things: perhaps you can re-examine the need for
PIPI. I've never been a big fan and always consider it to be
a temporary solution to a problem, until one has the time to
get all the subprograms LE-conforming. So I was surprised
when you wrote you were developing a new application that
used PIPI.

Also, if you can do the init_sub_dp option, then do start_seq
and keep calling subroutines with call_sub, and then do
end_seq then term keeps you from having to break down the
environment every time. Of course, it may not work in your
situation, based on your logic needs.

Finally, I recommend you talk with John Monti of the LE group.
He really knows the product and all the developers. If you
want to do that, drop me a line off list and I'll pass his
contact info to you (don't want to publish his email publicly,
to avoid a rash of emails to him).

<add>
Of course, don't overlook the training option:

"Using LE Services in z/OS" - 3 days
  http://www.trainersfriend.com/Language_Environment_courses/m512descr.htm

as well as
"Secrets of Inter-Language Communication in z/OS" - 3.5 days
  http://www.trainersfriend.com/Language_Environment_courses/m520descr.htm

</add>



----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to