Re: RPG Service Program vs Include Source for Shared Subprocedures and SQL Calls

Marco Facchinetti <marco.facchinetti-kthxv0ud/[email protected]> Sat, 21 Mar 2026 15:20:27 +0100
Newsgroups gmane.comp.lang.as400.rpg
Message-ID <CAMsgu4qbK5QSMBy8-y9Yzk-KQsvFdK57sV9NxS+jRq7rjWTp0Q@mail.gmail.com>
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

Best regards
--
Marco Facchinetti

Mr S.r.l.

Tel. 035 962885
Cel. 393 9620498

Skype: facchinettimarco


Il giorno ven 20 mar 2026 alle ore 22:13 Richard Schoen <
richard-DiTrGpQEJGItADg8e/3/[email protected]> ha scritto:

> Hi All,
>
> In the Python, Java and .Net world I usually create Python classes, jar
> files or DLLs to contain shared functionality.
>
> Because most IBMi shops have an interesting mix of RPG code bases I'm
> trying to determine whether I should create a service program or use
> includes for shared functionality at a customer site.
>
> With service programs, write once, bind and use everywhere.
>
> With copy books, just include on-the-fly.
>
> In the past I've leaned towards copybooks, but I'm curious what others
> think.  I'm a little cautious of burying SQL functionality into one or more
> service programs.
>
> Real-world thoughts appreciated.
>
> Thanks
>
> Regards,
> Richard Schoen
> Web: http://www.richardschoen.net
> Email: richard-DiTrGpQEJGItADg8e/3/[email protected]<mailto:richard-DiTrGpQEJGItADg8e/3/[email protected]>
>
> --
> 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: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
> Before posting, please take a moment to review the archives
> at https://archive.midrange.com/rpg400-l.
>
> Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org 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: RPG400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions.