× 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.



I use modules for my product deliveries for certain things (internal
procedures, licensing, etc).

For product functionality it's service programs. Ie, if it's something
that they can use with the product in an ILE environment.

So there are reasons to use modules and have them in a binding directory.
But not in a shop where it's mostly home grown software.

Bradley V. Stone
www.bvstools.com
MAILTOOL Benefit #15 <https://www.bvstools.com/mailtool.html>: The ability
to add a Footer to each email sent using an IFS stream file.

On Wed, Feb 7, 2018 at 11:57 AM, Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:

I would not have encountered this Brian because I would never put a module
in a binding directory.

If I remember correctly, the ability to list modules in binding
directories was intended as an easy method for building programs from
multiple modules. But few people do that - I certainly don't.

If I need a module in more than one place I put it in a service program
and that is what goes in the binding directory.


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

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

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

--
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

--
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 ...

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.