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.