Seems to me there are a number of approaches each with its own set of advantages and disadvantages:

1) List modules and service programs on each CRTPGM.

Simplest approach but onerous and likely to result in errors because humans have poor recall and poor attention to detail.

2) Use BNDDIR (containing modules and/or service programs) on CRTBNDxxx command.

Fairly simple but inconsistent command definitions (note1) make it difficult to implement.

3) Use naming conventions to group related modules. Logic goes in XXXXX01, display goes in XXXXX02, database I/O goes in XXXXX03. Then a simple CRTPGM XXXXX MODULE(XXXXX*) will get them all. Service programs are picked up from a single common *BNDDIR.

Easy to remember but possibly hard to retrofit.

4) Use one *BNDDIR per program object. This lists ONLY the modules used by the program. Have another *BNDDIR containing ALL service programs. Reference both *BNDDIR objects when creating the program.

Easy to remember and takes advantage of the built-in compiler support for H-spec directives in RPG. Does result in a plethora of unnecessary *BNDDIR objects.

5) Use build scripts or a build tool to list the modules. Again, a single common *BNDDIR contains all service programs.

Reasonably easy. Not limited to RPG H-spec support. Do need to learn another tool/script or remember to compile CL scripts (unless you use them as job streams).

6) Use a change management system. A good one can either determine the needed modules or will support build scripts.

More complex but is the best and proper solution.

There are other mixtures of CRTBNDxxx commands, modules, service programs, and binding directories but they become rather artificial so I'm ignoring them.

For me I would use option 6. If I did not have access to a change management system (although I probably would refuse to work for such a company) then I would use option 3 but could, perhaps, be persuaded to consider option 4.



Note1: The inconsistencies in the various CRTBNDxxx commands seriously irritates me.

BNDDIR ACTGRP DFTACTGRP
CRTBNDC N N N
CRTBNDCBL Y Y N
CRTBNDCL N Y Y
CRTBNDCPP N N N
CRTBNDRPG Y Y Y

I'm not surprised by the lack of support on the C and C++ commands because they are obviously written by people with NO understanding of OS/400 (witness the blindingly stupid use of the OUTPUT parameter as a case in point) but I would expect System DCG (if it still exists) to ensure consistency. All these commands should support all three keywords even if DFTACTGRP is a bad idea (and don't get me started on STGMDL).

Regards,
Simon Coulter.
--------------------------------------------------------------------
FlyByNight Software OS/400, i5/OS Technical Specialists

http://www.flybynight.com.au/
Phone: +61 2 6657 8251 Mobile: +61 0411 091 400 /"\
Fax: +61 2 6657 8251 \ /
X
ASCII Ribbon campaign against HTML E-Mail / \
--------------------------------------------------------------------




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