× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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.

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.