|
The address of the procedure doesn't need to be known at compile time, it needs to be known at bind time. :) The difference is subtle, but its useful. In particular, I have service programs that get data and need to write it somewhere, but depending on the application, where they write it can be different. So I pass them procedure pointers, and they call the given procedure to write the data. If I want to write it to a stream file, for example, I can pass the address of the IFS "write" procedure. Similarly, I can provide my own procedure, in the same format as "write", if I want to do something else with it. I don't need these to be "truly dynamic", and I appreciate the speed improvement that binding them gives me -- but at the same time, I don't want to recompile the service program for every new application that uses the routines -- and this is why its important that the addresses are resolved at bind time. Make sense? On Tue, 5 Dec 2000, Peter Connell wrote: > Jon has already alluded to the fact that the standard use procedure pointers > only gives the illusion of dynamic procedure calls. In other words the > procedure call is dynamic only in the sense that it points to a procedure > whose address was resolved at compile time or when the program was activated > in the case of a service pgm, unlike the old dynamic calls that are resolved > only at runtime. It means that you can benefit by coding a call using a > procedure pointer but you still have to include code that initializes all > the pointers by assigning them the address of the corresponding procedure. > So you are in effect still hard coding all the procedure calls. > > To obtain a truly dynamic procedure call that is not known at compile time > you must you the special API's that permit you to force the activation of a > service pgm and provide access to the procedures within. > > Cheers, Peter > +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
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.