Re: *INLR
Luca Giammattei <[email protected]> Thu, 16 Apr 2026 10:47:09 +0200
| Newsgroups | gmane.comp.lang.as400.rpg |
|---|---|
| Message-ID | <[email protected]> |
Il 15/04/2026 22:48, [email protected] ha scritto: > If I have PgmA and it repeatedly calls PgmB, I know not setting on LR makes > the process faster because it doesn't have to reload PgmB into memory every > time. > > The argument that we are having is related to PgmA submitting PgmB to enable > multi-thread processing. Does not setting on LR help in this case because > they are different jobs? > > For example, > PgmA > Do until shutdown > Read Invoice Header File for unprocessed invoices > If a new invoice is found > Mark the invoice as In-Process > Submit PgmB to process the invoice > > > PgmB > Process invoice based on invoice number received > Mark invoice as Processed > ** Note: no *INLR logic here > Return > > VS > > Process invoice based on invoice number received > Mark invoice as Processed > *inlr = *on > Return > don't know how many invoices you process and how big is your box, if the PgmA and PgmB are both OPM, ILE or mixed, also don't know if there's any concurrent job on the same files and tables as all these information would be helpful on planning the best way to make your pgms work, anyway in some of the systems where i worked there are ten of thousands of invoices processed per day, simply thousands in the smallest ones, a great benefit came from introducing service programs and implementing ile architecture and full sql access delegating al I/O and reading from files to procedures within a srvpgm's object. Let's say that instead of submitting PgmB (is an interactive or a batch job?) you defined it as a procedure of a service program exported, so lets's say you did something this way: returnCode=processInvoice(invoiceNumber); if returnCode='ok'; //it all went well //do something or nothing elseIf returnCode<>'ok'; //do something else endif; and in another module: dcl-proc processInvoice export; dcl-pi *n like(returnCode); invoiceNumber int(10); end-pi; dcl-s retCode char(35); //marck the invoice as in process invoiceInProcess(invoiceNumber); //then process the invoice //then mark the invoice as processed invoiceProcessed(invoiceNumber); return retCode; end-proc; in really big volumes this saves some resources, i've seen it happens with my eyes -- 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.