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.