|
Gary L Peskin wrote: > > (1) What kind of "create errors" do you get if the new set of exports is > at the bottom? > > (2) If you do a DSPSRVPGM on your service program, do both sets of > signatures show up? > > (3) If you do a DSPPGM on your CALLING program and then hit enter until > it shows the service programs, does the signature shown match the > ORIGINAL signature of the service program? > > (4) Are you explicitly specifying the LVLCHK or SIGNATURE parameter of > the STRPGMEXP statement? > > Gary > > Nelson Smith wrote: > > > > I'm with you on everything you said below except for two small areas. > > First, I get create errors when trying to create the service program if > > I don't move the new set of exports (shown at the bottom of your source) > > up to the top of the source. Once I move it there, the service program > > creates fine. However, this may be the source of my second problem. > > > > In your next to last paragraph, you said your original program "B" > > references the first export in the ORIGINAL block of source. That is > > not my experience. In my case it references the first export in the NEW > > block of source which in the example below is a newly added export. > > Unexpected results occur because the parameters are usually different. > > > > Do you have no problem recreating the service program with the binder > > source shown as below, with the new set of source exports at the end? > > If not, what am I doing wrong? What are your parameters set to on the > > CRTSRVPGM command? > > > > Gary L Peskin wrote: > > > > > > Nelson -- > > > > > > I don't mean to be dense here. But let me give you an example so that > > > you can explain to me where my misunderstanding is. > > > > > > I have a *PGM ("A") which consists of one module ("AM") which I recently > > > created using the following binder language: > > > > > > STRPGMEXP PGMLVL(*CURRENT) LVLCHK(*YES) > > > EXPORT SYMBOL('sym1') > > > EXPORT SYMBOL('sym2') > > > ENDPGMEXP > > > > > > After *PGM A is created, I create program B which calls procedure sym1. > > > > > > Now, I enhance module AM and add a new entry point, called 'new1'. > > > > > > Say I place this procedure before 'sym1' in AM. By the way, I think the > > > RTVBNDSRC creates the exports in an order specified by the compiler. > > > The C compiler places the exported symbols in the same order as they > > > appear in the program -- don't know about the other compilers.) > > > > > > Now, I do a RTVBNDSRC, adding to my previous source. After the command > > > runs, I get: > > > > > > STRPGMEXP PGMLVL(*CURRENT) LVLCHK(*YES) > > > EXPORT SYMBOL('sym1') > > > EXPORT SYMBOL('sym2') > > > ENDPGMEXP > > > STRPGMEXP PGMLVL(*CURRENT) LVLCHK(*YES) > > > EXPORT SYMBOL('new1') > > > EXPORT SYMBOL('sym1') > > > EXPORT SYMBOL('sym2') > > > ENDPGMEXP > > > > > > The first four lines were in my binder source member from before I ran > > > the RTVBNDSRC command. > > > > > > I change the binder source by replacing all but the last *CURRENT to > > > read *PRV so now the source looks like this: > > > > > > STRPGMEXP PGMLVL(*PRV) LVLCHK(*YES) > > > EXPORT SYMBOL('sym1') > > > EXPORT SYMBOL('sym2') > > > ENDPGMEXP > > > STRPGMEXP PGMLVL(*CURRENT) LVLCHK(*YES) > > > EXPORT SYMBOL('new1') > > > EXPORT SYMBOL('sym1') > > > EXPORT SYMBOL('sym2') > > > ENDPGMEXP > > > > > > Since I haven't explicity specified a signature, the system will create > > > a different unique signature for each STRPGMEXP .. ENDPGMEXP block. New > > > programs which call "A" will use the *CURRENT export block and will have > > > that signature embedded in them. > > > > > > However, my old program "B" will still work, without recreating it, > > > because "B" references the first slot in the ORIGINAL export block > > > (which it locates based on the signature still embedded in "B") which is > > > still 'sym1'. > > > > > > Programs compiled under an earlier signature will reference the earlier > > > signatures exports in that signatures ordinal order. Are you overriding > > > the signature or not retaining old signatures? > > > > > > Gary > +--- > | This is the Midrange System Mailing List! > | To submit a new message, send your mail to MIDRANGE-L@midrange.com. > | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. > | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: david@midrange.com > +--- (1) I'll have to go back Monday and see if I can recreate the error. I don't get them anymore since I started rearranging the output from RTVBNDSRC. I don't remember the exact message number. (2)&(3) At the time I was having the problems, the signatures are something I checked closely and everything matched up as it should. (4) No. I'm using the STRPGMEXP statement exactly as generated by RTVBNDSRC. If I remember correctly, LVLCHK defaults to *YES and SIGNATURE is only used to override the normally generated signature to something you hardcode. You didn't explicitly say so, but can I assume from your questions that you do not get any errors when you leave your newly created set of exports at the bottom of the source member? -- Nelson Smith "Standards are Wonderful....cause there's so many to choose from!" ncsmith@gate.net +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.