× 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.



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


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.