Javier,

Look up the ON-EXIT opcode. It allows you to have code execute whether the program ends normally or abnormally. If you are doing it on the mainline, it will require that you use a linear main procedure (using the MAIN keyword in the control specs).

Brian May
Director
Pre-Sales and Customer Solutions
Profound Logic Software
http://www.profoundlogic.com
937-439-7925 Phone
877-224-7768 Toll Free
  

UI Modernization. And More!

www.profoundlogic.com
      

-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Vern Hamberg
Sent: Thursday, June 3, 2021 11:14 AM
To: rpg400-l@xxxxxxxxxxxxxxxxxx
Subject: Re: End a program gracefully even with ENDJOB

The challenge is greater when the NEP (never-ending-program) has a delay, especially of some length, say, 5 or 10 minutes. We have some that check a data area for whether to keep going or to end. That's fine, until there's a long wait, as I mentioned.

I'm now checking job status with the active_job_info SQL service - if it's other than *DLYW, the job should not be ended. I repeat the check every few seconds. Once the job is in *DLYW, I change the data area to indicate the job is to be ended and I do an ENDJOB.

I need the data area set, because I don't allow running 2 of the same job, so it's used in a startup program.

My issue is that the job is often ended with a 50 severity - not all that big a thing, perhaps, but I'd love to have a way for it to end when I want it to, and for it to still have a low severity ending.

Cheers
Vern

On 6/3/2021 10:42 AM, Javier Sanchez wrote:
I'm sure this is an old subject, but I never had the time to implement it.
I need to have the opportunity to do some graceful updates to a table
in a looping socket RPG program that will end when it receives an
indication to terminate. This updates a flag in a table to report
that its status is Ended. So this program does end gracefully. It
also has formal commands to start it and to end it.

But when an IPL is needed, the operator simply forgets to issue those
commands and the ending is abrupt, so the update of the status doesn't
take place.

I understand that the ENDJOB command for a job running an RPG program
would send a TERM signal to the program but the default handler (I
think) would simply force it to end with no chance to run a graceful
subroutine that does the update.

Can you please give me an example that does this?

Thanks.

--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.