Re: RPG Service Program vs Include Source for Shared Subprocedures and SQL Calls
Buck Calabro <[email protected]> Sat, 21 Mar 2026 19:05:34 -0400
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <CACMm6qDxm6tx_VzoTeT0kOWFX8a_hm46AbMkBV7okrZNkUy1bw@mail.gmail.com> |
Richard said: > So are you saying when you make a sub procedure call to a service program you can’t see globals from the main program ? You can, with EXPORT and IMPORT but oh please don't. On Sat, 21 Mar 2026 at 11:10, Marco Facchinetti <[email protected]> wrote: > > My English has probably failed me again. > > The functions that access the main program's global variables are those in > the copied members, not those residing in the service programs. > > Best regards > -- > Marco Facchinetti > > Mr S.r.l. > > Tel. 035 962885 > Cel. 393 9620498 > > Skype: facchinettimarco > > > Il giorno sab 21 mar 2026 alle ore 15:54 Richard Schoen < > [email protected]> ha scritto: > > > This use case definitely makes sense to me. > > > > So are you saying when you make a sub procedure call to a service program > > you can’t see globals from the main program ? > > > > I think that was one of the curiosity questions I had outstanding. > > > > Regards, > > Richard Schoen > > Web: http://www.richardschoen.net > > Email: [email protected] > > > > ----------------------- > > > > message: 4 > > date: Sat, 21 Mar 2026 15:20:27 +0100 > > from: Marco Facchinetti <[email protected]> > > subject: Re: RPG Service Program vs Include Source for Shared > > Subprocedures and SQL Calls > > > > Most of the time the correct solution is *Srvpgm, but there are rare > > exceptions where it may be preferable to use the copy version. > > > > An example in (our) real life is the invoice printing program: since we > > serve multiple customers and each has a specific version that shares 90% of > > the code with the others, the use of copies solved the problem of > > maintaining a common structure and having specific functionality. > > > > Each shared routine or function contained in the copied members makes one > > or more calls to custom routines/functions at fixed points (start, body, > > and end). The return code of these calls determines whether or not to > > execute the corresponding code in the standard function. This allows custom > > code to replace or supplement the shared code. > > > > I haven't found a simple way to do this using service programs, especially > > since functions and routines in copied members make perfectly legitimate > > use of the main program's "global" variables. > > > > The problem with this kind of management where 90% of the code of a program > > is not in the main source is that RDi cannot handle it, this is the reason > > why I uploaded this idea: > > > > https://ideas.ibm.com/ideas/IBMI-I-4740 > > > > > > -- > > This is the RPG programming on IBM i (RPG400-L) mailing list > > To post a message email: [email protected] > > To subscribe, unsubscribe, or change list options, > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > > or email: [email protected] > > Before posting, please take a moment to review the archives > > at https://archive.midrange.com/rpg400-l. > > > > Please contact [email protected] for any subscription related > > questions. > > > > > -- > This is the RPG programming on IBM i (RPG400-L) mailing list > To post a message email: [email protected] > To subscribe, unsubscribe, or change list options, > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l > or email: [email protected] > Before posting, please take a moment to review the archives > at https://archive.midrange.com/rpg400-l. > > Please contact [email protected] for any subscription related questions. > -- This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/rpg400-l or email: [email protected] Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l. Please contact [email protected] for any subscription related questions.