|
Hi Hans, what about error handling and CALLP (it's a comment rather than question :))) Take care, Vanja On Fri, 26 Feb 1999 boldt@ca.ibm.com wrote: > > > > Patrick wrote: > >I am trying to distinguish the differences in the CALLP & CALLB commands > >vs. the CALL command in RPG IV. I am trying to locate a web site or > >document that summarizes the differences between these and to give me some > >ideas as when to use these. > > > >We use a LOT of CALLs to subprograms (verifying account numbers, returning > >employee information, returning item file information). I assume that both > >CALLP and CALLB will be faster than a CALL. Does anyone have any hints as > >to best convert the subprogram to a module, and what prototypes should be > >used for this? > > > >And if you know of a good website with code examples that are easy to > >follow, please let me know. > > Have you read the RPG IV Reference Manual and the RPG IV Programmers > Guide? > > First, CALLB is faster than CALL since it is calling something thats > statically bound. > > CALLP is a replacement for both CALL and CALLB in that it can do both > static and dynamic calls. When you use CALLP, you must code a procedure > prototype in your D-Specs. On the prototype, you can define either > bound or dynamic call linkage. Keyword EXTPROC is used to specify bound > linkage and EXTPGM is used for dynamic linkage. (The default is bound > linkage.) > > The main difference is that CALLP provides better error checking on the > parameter types than CALL/CALLB. It also provides additional function > such as value and constant reference parameters. > > Programs that you call currently using CALL or CALLB can easily be > called using CALLP by defining a prototype for that program. Just look > at the types of the fields defined in the *ENTRY PLIST for the program > and define the parameters in the prototype to match. Note that type > checking on a CALLP is much more rigorous than on a CALL, so you have > to be careful defining the parameters. For example, if you want to be > able to pass character fields of different lengths or arrays with > different numbers of elements, you need to specify OPTIONS(*VARSIZE). > If certain parameters are optional, you need to specify OPTIONS(*OMIT) > or OPTIONS(*NOPASS). > > You don't have to change anything in the called program to be able to > call it using CALLP. If you want to take advantage of new language > features, though, you could define a procedure interface for that > program to replace the *ENTRY PLIST. When adding new functionality, > you could code that using sub-procedures. > > When defining the prototypes for a module, the approach we recommend is > to place the prototypes for a module in a /COPY member. Include that > /COPY member in the modules source as well as the source files of all > other modules that call procedures in that module. > > Cheers! Hans > > Hans Boldt, ILE RPG Development, IBM Toronto Lab, boldt@ca.ibm.com > > > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * > * This is the RPG/400 Discussion Mailing List! To submit a new * > * message, send your mail to "RPG400-L@midrange.com". To unsubscribe * > * from this list send email to MAJORDOMO@midrange.com and specify * > * 'unsubscribe RPG400-L' in the body of your message. Questions should * > * be directed to the list owner / operator: david@midrange.com * > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * This is the RPG/400 Discussion Mailing List! To submit a new * * message, send your mail to "RPG400-L@midrange.com". To unsubscribe * * from this list send email to MAJORDOMO@midrange.com and specify * * 'unsubscribe RPG400-L' in the body of your message. 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-2025 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.