No, no no...

If he removes a procedure as the OP indicated he wanted to do, he needs to
rebind everything....always.

As Buck describes, programs bind via export#, not name. The export# is
determined by the order the procedures are exported. When using binder
language, they are exported in the order listed.

Charles


On Thu, Feb 20, 2014 at 3:09 PM, Jeff Young <jyoung0950@xxxxxxxxx> wrote:

Buck,
He would only need to rebind every program if he did not user binder
language.
Using binder language, he makes a copy of the existing config and changes
the STRPGMEXP PGMLVL(*CURRENT) to STRPGMEXP PGMLVL(*PREVIOUS) on one copy
and then in the *CURRENT copy, he just lists the procedures he now wants.
The programs that have not been rebound will use the *PREVIOUS copy.

Jeff Young
Sr. Programmer Analyst


On Thu, Feb 20, 2014 at 3:01 PM, Buck Calabro <kc2hiz@xxxxxxxxx> wrote:

On 2/20/2014 2:22 PM, Koester, Michael wrote:
I have a service program that contains 8 modules. One of those modules
I want to replace with another of a different name - deprecating one and
adding a new one that is similar but different enough to be named
differently. The one program that called the module to be removed is
being
changed and recompiled (to use the new & improved one), so the old module
would not really be missed.

Terminology can be very important here.
Do you want to remove a module from the service program or a
sub-procedure? A program can't call a module.

Questions:
1) Would updating the service program (UPDSRVPGM) to add the new module
cause signature violation issues? I have binder source, which would be
updated, but some of the programs that call other modules of the service
program were created before the binder source.

If you remove a procedure from the list of exports, the signature bound
into all of the calling programs is now different. An example of
current service program exports:

mdy2ymd 1
encrypt 2
decrypt 3
centerstring 4
encode 5
decode 6

I have a program OEORDDSP which uses encode and decode. When I compile
OEORDDSP, the binder doesn't store the procedure names in the code, it
stores their export position. So when the RPG program does a serial =
encode(name) it really calls out to serial = EXPORT[5] PARM(name).
Perfectionists are cringing but that's the general idea.

If you remove centerstring from your service program and run OEORDDSP,
it will still call the 5th export, because that's what we told it to do
the lat time we compiled it. Only now, here is the list of exports:

mdy2ymd 1
encrypt 2
decrypt 3
encode 4
decode 5

Yeah, the decode procedure gets called instead of the encode procedure.
That's why service program signatures exist - to stop that from
happening accidentally.

2) Is that old module forever part of the service program (and a source
of confusion to everyone that follows me and wonders about this phantom
module)?

Yes, it would be left in the service program.

3) Would I be better off recreating the service program (CRTSRVPGM) to
permanently remove the old module?

Running 7.1, no TR 7 yet.

If you remove a procedure you will pretty much need to rebind every
program that uses that service program.
--buck

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.


--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/midrange-l.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.