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




On 28/09/2009, at 9:51 PM, David FOXWELL wrote:

Thanks, I'm reading Who Knew You Could Do That with RPG IV and wondering why I would use binder source to limit the number of procedures available. Why would you have an exported procedure if it wasn't available?

A procedure without EXPORT is only visible within the containing module. If you have a program or service program containing multiple modules and one module needs to call a procedure in another module bound-by-copy then you need EXPORT to make it visible. Same for data unless passed as parameter.

All procedures with EXPORT are candidates for the public interface. If you specify EXPORT(*ALL) when creating a service program then all those candidate procedures plus any data exports become part of the public interface. The members of the public interface are used to calculate the service program signature. Whenever you add a new export a new signature will be created. No previous signatures will be supported and you will have to recompile all consumers of the service program.

Using binder source to limit the exports in the public interface gives three levels of visibility:
1) Private to the module
2) Private to the service program
3) Public

It also gives the ability to support either different (i.e., previous) signatures or a single signature which means I don't have to recompile any consumers of the service program if they don't need to use any of the new exports.

Also, it suggests to use binder source and not use EXPORT(*ALL). I'm confused.

Never use EXPORT(*ALL). Search the archives for previous discussion on why that's a stupid thing to do.


Program code is demand paged so only a small proportion
of the program code will be in main storage at any one time.
Program code is shared between users. All static variables
will require separate storage in each job.

Looked closer at the 2 versions of the program and found in program statistics, static memory size has gone from 19872 to 4441296. Is that worse? That's 223 times more.

You went from a program with one module to a program with many modules. Each module will have it's own storage requirements. Obviously more modules equals more storage. However, that storage would be used regardless of how you bound the modules. That is, it would be used in any program that contained those modules. It's not necessarily worse.


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




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.