× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



That's not quite my experience, Jon. IF a *BNDDIR is used, the Export list from the Binder Language also determines which components to be included, i.e. only those *MODULEs whose exports satisfy the Export list.

EXAMPLE
Three *MODULEs, M1, M2 and M3.
M1 - has no imports or exports defined (daft as it may sound) and is of no use at all
M2 - has export E2
M3 - has export E3

The *BNDDIR BD has two entries for M2 and M3

The Binder Language (source member) SRV specifies EXPORT SYMBOL('E2') only.

To create the *SRVPGM SRV I can specify:

CRTSRVPGM SRVPGM(SRV)
MODULE(M1) <<<< specify something because the only values allowed are (Name, generic*, *SRVPGM, *ALL)
EXPORT(*SRCFILE) SRCMBR(SRV)
BNDDIR(BD)

I end up with *SRVPGM SRV containing M1 and M2 - not M3. The *MODULE M3 is not required to satisfy the Export list, nor any imports required by M1 and M2.

But I don't really want M1 in the *SRVPGM. So, perhaps I should have issued the command,

CRTSRVPGM SRVPGM(SRV)
MODULE(M2) <<<< because the only values allowed are (Name, generic*, *SRVPGM, *ALL)
EXPORT(*SRCFILE) SRCMBR(SRV)
BNDDIR(BD)

but now M2 is mentioned twice, (on the command _and_ in the *BNDDIR).

This is a somewhat silly example, but I suggest we should be able to issue the command,

CRTSRVPGM SRVPGM(SRV)
MODULE(*NONE) <<<<
EXPORT(*SRCFILE) SRCMBR(SRV)
BNDDIR(BD)

if a Binding Directory is specified.

<Phew>. I hope I have explained the situation. It comes about because some folk have a separate *BNDDIR for each *SRVPGM. So, the list of module names in the *BNDDIR reflects the "make-up" of the *SRVPGM. Under these circumstances, why do we need to specify the MODULE() parameter at all? I've never quite got it and I hate saying, "that's just the way it is" to people.

Apologies for steering things off in a wild direction. I agree a "make" function is a much neater way of dealing with things. Perhaps *BNDDIR should be avoided altogether?

Brian.


On 06/02/2018 23:01, Jon Paris wrote:
That base module is going to determine which other components are included/referenced surely.

The Export list is only identifying those labels to be exported from the service program - not the overall components to be included. It could easily get to be a nasty circular mess without some "guidance".


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Feb 6, 2018, at 4:24 PM, Brian Parkins <goodprophet.bp@xxxxxxxxx> wrote:

Forgive me for hijacking this thread a little. One thing I have never quite understood about the CRTSRVPGM command, perhaps someone can enlighten me?

Suppose I wish to create a *SRVPGM using the Binder Language to define the procedure exports. Suppose also I wish to use a *BNDDIR to specify the list of *MODULES to search for these exports.

QUESTION: Why then must the CRTSRVPGM command still have the MODULE parameter explicitly defined? In other words, why does (at least) one *MODULE have to be specified explicitly on the command. (The default is MODULE(*SRVPGM).) The Binder Language will specify the export symbol table and thus determine other *MODULES that are required from the *BNDDIR (and hence any other *SRVPGMs/*MODULEs) to complete the bind.

CRTSRVPGM SRVPGM(SRVPGMNAME)
MODULE(???????) <<< Why is this needed??
EXPORT(*SRCFILE) SRCFILE(QSRVSRC)
BNDDIR(DIRNAME)

Put another way, since a *SRVPGM has no Entry Module, why is the MODULE parameter required at all? (The BNDSRVPGM parameter is optional, so why not the MODULE parameter under these circumstances?)

Silly Example: Suppose I specified MODULE(NOEXPORTS) above. By implication NOEXPORTS does nothing at all. It is of no use within the *SRVPGM yet the parameter must be specified.

I must be missing something obvious.

Brian.
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: http://amzn.to/2dEadiD


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.