|
Jim Wiant wrote:
Thanks a lot for the clarification Barbara. I want to be clear about FREE - are you referring to /Free (Free Format RPG)? If so, are you saying that if the call command is within the free format syntax, it will behave as I expect (i.e. resolving the library list each call?)
Oops, sorry for the confusion. No, I mean the FREE opcode in RPG/400:
C CALL 'PGM001'
C FREE 'PGM001'
C CALL 'PGM001'
The ILE RPG behaviour is the same for free-form calls with EXTPGM too.
You can get around it the same way, by using a variable for EXTPGM, and
using the variable name to call some other program when you want to
re-resolved to your program.
D pgm001 pr extpgm(pgm001Var)
D parms ...
D dummy pr extpgm(pgm001Var)
D pgm001Var S 21a
/free
pgm001Var = 'DUMMY';
callp (dummy);
pgm001Var = 'PGM001';
callp pgm001 (parms ...);
/end-free
If you had a subprocedure that handled the first three lines, you could
code
/free
resetPgm001Var ('PGM001');
callp pgm001 (parms ...);
/end-free
Or you could have a subprocedure that actually handled the call to
pgm001; it would have the prototypes with the EXTPGMs, and do all the
business with the call to DUMMY. (This would work fine unless you had
optional parameters.)
/free
callp callPgm001 ('PGM001' : parms ...);
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.