ON-EXIT popped in my head about 10 minutes before these answers came in.
It looks like ON-EXIT is what I am after because I found that it even executes if I am debugging and at a breakpoint in the middle of the procedure and then F3 out of the debugger. These other APIs look like they could be cool to use but appear to be overkill for what I need at this time. I just don't want to be pulling data from the production machine, have an error abend my program, and not know that I still point to the prod machine when I run an SQL update. And to beat everyone else to it, I know if security is correct that can't happen but we all know how improperly secured many of our client's systems can be.
Thanks guys.
-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Scott Klement
Sent: Wednesday, July 26, 2023 3:47 PM
To: rpg400-l@xxxxxxxxxxxxxxxxxx
Subject: Re: Runtime errors in a program
Hmmm.. there are a number of options, depending on the specific details, different ones might be useful.
There's RPG's ON-EXIT... this always runs before the program exits, even if the program ends in error... so you could reset the connection there. That'd be simple.
There is CEE4RAGE -- a system API that you can use to register a subprocedure that is called when the activation group ends. This can serve a similar purpose, and allow you to keep the connection open while the activation group is active.
There are CEERTX/CEEUTX APIs that can register/unregister a routine to call when a given call-stack entry ends abnormally.
There is MONITOR/ON-ERROR/ON-EXCP/ENDMON -- for a situation like yours, you could put all of your connection code into a subprocedure and call it within the MONITOR block, and if the procedure receives an error that it doesn't handle itself, it'll run your ON-ERROR block.
There's *PSSR/INFSR as well, I'm not a big fan, I've found these awkward and error-prone... but they still exist.
Is this helpful?
On 7/26/23 2:17 PM, smith5646midrange@xxxxxxxxx wrote:
Was there something in RPGLE that replaced the *PSSR or am I thinking
of something in a different language?
I have a program that changes the SQL connection to connect to other
systems and retrieves information from them. When it is done, it
resets the connection. If an error occurs somewhere during the
processing, I need to be sure it resets the connection. I'd like to
do this globally instead of using MONITOR/ON-ERROR to make sure I don't miss a spot.
--
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.
As an Amazon Associate we earn from qualifying purchases.