Sam, Thanks for the confirmation, that's what I just figured out from re-reading the FM.
Peter -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Sam Siegel Sent: Friday, March 17, 2017 11:47 AM To: [email protected] Subject: Re: Need help understanding use of CEEPIPI from non-LE assembler main programs There are two tables which contain the programs: 1) The PreInit table coded with CEEXPIT, CEEXPITY and CEEXPITS macros; 2) The table maintained by LE. During the LE initialization process, a table is constructed in storage controlled by LE. The information in the PreInit table is copied over. The add_entry function updates the LE constructed table, not the user constructed table. Notice that the add_entry, delete_entry, identify_entry, identify_environment and identify_attribute use the environment token, not the table address as function arguments. Please read the add_entry doc again. You will see that it specifically says that the "LE maintained table" On Fri, Mar 17, 2017 at 8:16 AM, Farley, Peter x23353 <[email protected]> wrote: > Gord, > > That's what I have coded so far, but here is what happens: > > 1. The (init_sub) returns RC=8, but based on the ASMPIPI example I let > that go as not a fatal error since the pre-init table has only empty entries > 2. The first (add_entry) succeeds RC=0 in R15, but the pre-init table is > not updated at all (see debugging display below). The program being added > was compiled with Enterprise COBOL V4.2 so it is certainly a valid LE HLL > subroutine. > > So why does the (add_entry) not update the pre-init table? What am I doing > wrong here? > > Peter > > The pre-init table is defined with four empty entries like this: > > PPTBL CEEXPIT , > CEEXPITY , > CEEXPITY , > CEEXPITY , > CEEXPITY , > CEEXPITS , > > Debugging display (thank you Cole Software!) right after (add_entry) > succeeds, sanitized (names are not what I actually use here): > > XDC ===> d testpipi+4b8 2;d testpipi+4b8? 4;d testpipi+4308 2;d > testpipi+4308+c? > _ 00000000_0000EF48 8f (A.S.TSOUSERE) --- TESTPIPI.TESTPIPI+4B8, @R14+3A, > @R1+50, @R12+4B8, > _ TESTPIPI+4B8, PRIVATE+CF48 > _ +4B8 8f B70992D0 00000000 *..k}....* > <=== EP address of TESTSUBR and pre-init > table index returned by (add_entry) > _ 00000000_370992D0 8f (A.S.TSOUSERE) --- TESTSUBR+0, XPRIVATE+8992D0 > _ +0 8f 47F0F028 00C3C5C5 00000288 00000014 *.00..CEE...h....* > <=== TESTSUBR module in storage > _ +10 8f 47F0F001 98CEAC00 37099386 00000000 *.00.q.....lf....* > _ +20 8f 00000000 00000DFF 90ECD00C 4110F038 *..........}. .0.* > _ +30 8f 98EFF04C 07FF0000 370992D0 00000000 *q.0<......k}....* > _ 00000000_00012D98 8f (A.S.TSOUSERE) --- TESTPIPI.TESTPIPI +4308, > TESTPIPI+4308, PRIVATE+10D98 > _ +4308 8f 80042508 00000003 *........* > <=== Address of CEEPIPI, two other > constants, address of pre-init table > _ +4310 8f 00000009 00012EE4 00000000 3711BDB8 *.......U......].* > _ 00000000_00012EE4 8f (A.S.TDPEFARE) --- TESTPIPI.TESTPIPI +4454, > TESTPIPI+4454, PRIVATE+10EE4 > _ +4454 8f C3C5C5E7 D7E3C2D3 00000004 *CEEXPTBL....* > <=== Pre-init table after (add_entry) succeeds (RC = > 0) > _ +4460 8f 00000010 00000002 00000000 40404040 *............ * > _ +4470 8f 40404040 00000000 00000000 40404040 * ........ * > _ +4480 8f 40404040 00000000 00000000 40404040 * ........ * > _ +4490 8f 40404040 00000000 00000000 40404040 * ........ * > _ +44A0 8f 40404040 00000000 00000000 00278000 * ............* > > > -----Original Message----- > From: IBM Mainframe Discussion List [mailto:[email protected]] On > Behalf Of Gord Tomlin > Sent: Thursday, March 16, 2017 5:41 PM > To: [email protected] > Subject: Re: Need help understanding use of CEEPIPI from non-LE assembler > main programs > > On 2017-03-16 16:11, Farley, Peter x23353 wrote: >> Doesn't use of (add_entry) presume that you add to the table BEFORE you call >> (init_subr) or (init_subr_dp)? What if initialization is set up to be done >> first, before any entries at all appear in the table? > > We do INIT_SUB, followed by ADD_ENTRY calls for all the routines to be > called via CEEPIPI. Then we do CALL_SUB for any routine using the index > returned by ADD_ENTRY. -- 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
