|
> From: Scott Mildenberger
>
> Exactly, this is how my dynamic calls look because I do
> prototype them with EXTPGM. I actually use the prototype in the
> program itself by using conditional compilation directives.
> Then if you want to dynamic call a program using prototype you
> just do the following to get the prototype:
>
> /define PROTOTYPE_ONLY
> /copy qrpglesrc,frselcomp
> /copy qrpglesrc,frselmfg
> /copy qrpglesrc,frselwork
> /copy qrpglesrc,frwrkexcl
> /copy qrpglesrc,frwrkmodl
> /copy qrpglesrc,frwrksegs
> /undefine PROTOTYPE_ONLY
Scott, I thought I ought to point out a little caveat I found with the
whole IF DEFINED thing. I am at V5R1, I don't know if it is fixed with
V5R2. And it's actually because I did something "clever".
I set up my included modules like this:
/IF NOT DEFINED(PROTOTYPE)
H NOMAIN
/ENDIF
* Prototypes for procedures in this module
D myProc
(...)
/IF DEFINED(PROTOTYPE)
/EOF
/ENDIF
* Rest of module source
(...)
And then in my including modules, I just do this:
/DEFINE PROTOTYPE
/COPY qmodsrc,mymodule
/UNDEFINE PROTOTYPE
This technique works GREAT! I don't have to go all the way to the
bottom of the source member and stick in an ENDIF. But if you know me,
when I use the word "clever" that means something bad is going to
happen, kind of like the Jaws music tells you the shark is coming.
Well, here's the catch:
The RPG compiler understands the concept of nested source, so when it
encounters /EOF, it simply stops processing the /COPY member and goes on
with the rest of the code. The catch is that the SQL preprocessor does
NOT understand nesting. Thus, the first time it hits an /EOF statement,
it thinks that's the end of the source, and you're done. Thus, if I
include anything, the source won't compile.
My only workaround to date is to go back to those modules that are
included in SQLRPGLE modules and put the /ENDIF at the end of the code.
Not pretty.
So, anyway, this long missive is simply intended to tell you that /EOF
is not compatible with the SQL preprocessor.
Joe
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.