I was going to keep the CEEPIPI token in a z/OS task level name/token pair. I don't like (really, I enjoy) being tacky, but the less I depend on the user/programmer, the better I like it. Messing up a name/token pair is much more difficult for a REXX programmer than messing up the contents of a REXX variable.
On Wed, Jul 10, 2013 at 10:32 AM, Farley, Peter x23353 < [email protected]> wrote: > Sam, what do you mean by "call sub addr" vs "call sub" from the Rexx point > of view? AFAIK there is no capability in z/OS Rexx to call a subroutine by > address. > > John, I strongly suspect that the efficiency of a CEEPIPI setup will more > than pay you back for the complexity of the setup for all but a very few > calls to the PCRE subroutines, i.e. in all but the very simplest of use > cases. > > I would set up the CEEPIPI environment and store the returned token in a > suitably "obscure" named Rexx variable (like ___C_E_E_P_I_P_I___) and > retrieve that variable on each call to the PCRE functions. Use the token > value if it is there and set up CEEPIPI if it is not yet there. > > Or you could require a Rexx variable to be passed as the first argument to > all functions in which you store the CEEPIPI token value, putting the > burden on the programmer to keep it intact and pass you the right value > every time. > > Peter > > -----Original Message----- > From: IBM Mainframe Discussion List [mailto:[email protected]] On > Behalf Of Sam Siegel > Sent: Wednesday, July 10, 2013 10:00 AM > To: [email protected] > Subject: Re: REXX and CEEPIPI questions. > > On Wed, Jul 10, 2013 at 6:30 AM, John McKown > <[email protected]>wrote: > > > I am trying to look at how to use the PCRE from Ze'ev Atlas in a REXX > > program in a "REXXish" way. PCRE is written in C and is basically > > implemented as a bunch of subroutines. Being in C means this requires > LE. I > > could just write my code to be LE compliant and then invoke it from REXX > > via a LINKPGM, or similar, method. I could pass the results back by > having > > my routine use IRXEXCOM to create specific REXX variables which could > then > > be used in the rest of the script. Yes, there are better ways, but I'm > just > > thinking out loud right now. > > > > I was also looking at using CEEPIPI somehow to establish an LE > environment > > which would last across calls to my PCRE functions. I have been reading > the > > books. But I can't find the answer to my first question. Which is: "If I > > call an HLASM routine which: (1) is not LE compliant; (2) uses CEEPIPI > > function "init_sub" to set up LE environment for calling subroutines; (3) > > returns to REXX. Will the LE environment stay around? If it does, could > it > > cause problems with REXX or even TSO itself? Could it cause problems if > the > > user were to invoke an LE enabled main routine (written in C, COBOL, ...) > > via a TSO CALL or ADDRESS LINK type invocation? If the user does invoke > an > > LE program, will that affect the CEEPIPI set up environment (as in > > terminate it)? Instead of "init_sub", should I use "init_sub_dp"? It > seems > > to have some advantages, but is more restrictive. Mainly it seems to be a > > way to avoid the possible "problems" of leaving an LE environment active. > > CEEPIPI init sub creates an LE environment and returns a token to the same. > The token is passed to the ceepipi call sub function along with other > parms. The LE environment represented by the token is usable on that tcb > until destroyed by using ceepipi term function. > > init sub dp allows you to create multiple LE independent environments under > the same tcb. verify your need before using this. > > best performance in calling the subroutine is to use is to use call sub > addr. This called the subroutine by address instead of name. if you are > going rexx->pipi->subroutine in high volume, call sub addr is worthwhile. > > If you are going rexx->pipi->subroutine just once or twice then call sub is > fine. > > init sub dp has other characteristics that are useful in a multi-tcb > environment. > > > Also, I am not totally sold on having an LE environment "hang around". I > do > > know that it saves on start up and shut down time. But I don't know if it > > is worth the effort because I don't really have a handle on how many PCRE > > invocations are going to be done in a single execution of a REXX program. > > > -- > > This message and any attachments are intended only for the use of the > addressee and may contain information that is privileged and confidential. > If the reader of the message is not the intended recipient or an authorized > representative of the intended recipient, you are hereby notified that any > dissemination of this communication is strictly prohibited. If you have > received this communication in error, please notify us immediately by > e-mail and delete the message and any attachments from your system. > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > -- This is a test of the Emergency Broadcast System. If this had been an actual emergency, do you really think we'd stick around to tell you? Maranatha! <>< John McKown ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
