Thanks Charles. This was the answer that I was trying to find.

-----Original Message-----
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of
Charles Wilt
Sent: Tuesday, September 13, 2022 3:06 PM
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: Handling errors in CLLE programs

ILE CL doesn't have any kind of "finally"

ILE RPG does..."ON-EXIT"

Charles


On Tue, Sep 13, 2022 at 12:55 PM <smith5646midrange@xxxxxxxxx> wrote:

Resending this because the "finally" part of the C#.net example got
pulled back up to the prior line.

-----Original Message-----
From: smith5646midrange@xxxxxxxxx <smith5646midrange@xxxxxxxxx>
Sent: Tuesday, September 13, 2022 2:19 PM
To: 'Midrange Systems Technical Discussion'
<midrange-l@xxxxxxxxxxxxxxxxxx

Cc: 'Vern Hamberg' <vhamberg@xxxxxxxxxxxxxxx>
Subject: RE: Handling errors in CLLE programs

The main part of my question got lost. Here is a shell of my program.

Get current library list
Change library list
Run some stuff
Reset library list

However, if anything in "Run some stuff errors" and the program gets
CANCELLED, I need the library list to reset AND the program to abend.
The issue is that sometimes this program will run interactively and
sometimes it will run in batch. If it is interactive, I need the libl
to be reset so the user's job functions normally. If it is batch, I
need the program to abend so the job abends and the batch schedule
doesn't continue.

I know there are a whole lot of hoops that can be jumped through with
if statements and CLs calling CLs and passing parms but I was looking
for something easier. For example, in C#.NET, I can do the following

Try
Run some stuff
Catch
Code to handle errors or leave blank and let it pass the error
back to whatever called it Finally
The code in this block gets executed whether the try block is
successful or not

I was hoping IBM added some type of "Finally" logic to the CL language
and I didn't know about it. That way if an error happens and they
cancel the program, it would execute that block to clean it up.



-----Original Message-----
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of
Vern Hamberg via MIDRANGE-L
Sent: Tuesday, September 13, 2022 1:44 PM
To: midrange-l@xxxxxxxxxxxxxxxxxx
Cc: Vern Hamberg <vhamberg@xxxxxxxxxxxxxxx>
Subject: Re: Handling errors in CLLE programs

I do this kind of thing many times when I want to put things back to
how I found them when I came in the door.

RTVJOBA will let you retrieve the USRLIBL, among all the other things.
Do that early on.

I just found an example of just what you need in the documentation for
RTVJOBA - here it is -

/* Declare Variables */
DCL &LIBL *CHAR 2750
DCL &CHGLIBL *CHAR 2760
/* save library list */
RTVJOBA USRLIBL(&LIBL)
:
/* Temporarily change library list */
CHGLIBL LIBL(MYLIB QGPL)
:
/* Build command string */
CHGVAR &CHGLIBL ('CHGLIBL (' *CAT &LIBL *TCAT ')')
/* restore library list */
CALL QCMDEXC (&CHGLIBL 2760)

Cheers

'Vern

On 9/13/2022 11:36 AM, smith5646midrange@xxxxxxxxx wrote:
I have a program that modifies the libl and then does processing.
If the program errors, I want it to pop the message, wait for the
response, and then if the program is "C"ancelled, I want the libl
reset back to the original before it exits.



Is there something that I can put in the CL that will ALWAYS execute
this "library reset" no matter how the program ends? I know I can
MONMSG CPF0000 at the top of the CL but that seems to intercept the
original error. I can probably retrieve the message and its text
inside of the CPF0000 block and reissue it after the libl reset (I
need the program to abend so it halts the job's flow) but I was just
wondering if there was an easier way that I don't know about.



Thoughts?

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-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


--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-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

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-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.