I've handled real-time integrations of new code by defining a variable
initialized to 1 in a particular program. I have a registry-like control
file with an entry for that program also initialized to 1. The program
initializes, it compares the program value to the database value. If
equal, the current version of the code is running. If the hard-coded value
in the code is not equal to the control value, the program code is stale.

When the program is changed, the variable is changed to 2 and the database
control is changed to 2. When the "old" version of the program is
accessed, the program variable (still 1) doesn't match the current version
from the database (or user space or data area or some service program)
which is now 2. For a typical order entry program, I check for the active
version after every order and end the program if the version has been
updated. Service programs are a bit more complicated but the task is
doable. Yes, you'll have to change your programs...but this is not 100%
bad. This mechanism allows me to disable an application--maybe I want to
shut down a few applications to speed up my Save While Active backup or
released a display file (although there are better ways, like creating a
copy of the DSPF in QTEMP and override to it).

On Wed, Feb 25, 2026 at 1:37 PM Daniel Gross <daniel@xxxxxxxx> wrote:

Hi,

probably they're replacing service programs or programs in production -
now you want to know, which jobs have to be restarted, to "re-load" their
service programs or program objects.

As loaded, but "inactive", service programs are not in the call stack,
there is no chance to identify them like that.

Even a combination of the call stack with BOUND_SERVICE_PROGRAM_INFO or
PROGRAM_RESOLVED_ACTIVATIONS doesn't help so much, as you never know what
was loaded in an activation group.

We tried to tackle this problem from the other side. Long running batch
jobs are resolving their PROGRAM_RESOLVED_ACTIVATIONS after they wake up
from their typical DLYJOB time. If one of the activations has been moved to
QRPLOBJ the program ends itself returning a specific return code in one
parameter.

The CLLE that receives the specific return code, reclaims the activation
group and restarts the program. This way the job doesn't have to end, but
the new service programs are loaded.

It's not perfect and you have to modify essentially every batch jobs, to
do that - but you don't have to worry about old service program versions in
memory.

HTH
Daniel


Am 25.02.2026 um 22:16 schrieb Mark Waterbury via MIDRANGE-L <
midrange-l@xxxxxxxxxxxxxxxxxx>:

 Hi, David,
Why do you care? Normally, library QRPLOBJ gets cleaned out
automatically after an IPL, so no programs should be active at that time.
What are you trying to accomplish?
If anyone compiles a program or recreates a service program with
REPLACE(*YES), the previous version will get renamed and moved to QRPLOBJ,
just in case it is actively "in use" in any jobs on the system.
Are you having some issue you are trying to figure out?
Please describe your goals or objectives.
Thanks,
Mark S. Waterbury
On Wednesday, February 25, 2026 at 03:22:14 PM EST, David Gibbs via
MIDRANGE-L <midrange-l@xxxxxxxxxxxxxxxxxx> wrote:

Folks:

Does anyone know if there is a way to determine if any active jobs are
using programs that have been moved to QRPLOBJ (or the iASP variation)?

I thought about using a combination of sql services to link jobs with
stack
info, but the program may be active, but not on the call stack.

Thanks!

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


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

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



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