The solution to the problem is don't use replace object. Use a make tool
like my Compile and delete the object. Don't leave it around to get
referred to. If you delete it and you get referred to the object it won't
exist.

The better solution to all this is to use a service program running in a
named activation group. Point your Stored Definition to use the procedure
in the service program. It's about 30% faster and you are not running the
RPG Cycle.

You will have the same problem if you recompile the service program and use
replace object. The pointer is going to point to the replace object
version. If you delete the object, it will at least blow up rather than
running the wrong program and it might actually go find the new version if
the old version is not there.

I have to leave to get on a plane or I would explain how the replace object
thing is working. I will try to reply this weekend.


On Fri, Nov 20, 2015 at 3:05 PM, Vernon Hamberg <vhamberg@xxxxxxxxxxxxxxx>
wrote:

Jeff

I'm not sure - Brad's reply suggests that it's best to bounce the servers,
just in case.

I seem to recall that even when a program ends after compiled with
replace(*YES), that the one in QRPLOBJ will be used - it's a job-level
thing, maybe - someone else will need to confirm or refute.

I see the behavior when I use debug, that it is using a different program
than the source looks like - so viewing the listing option points me to the
one in QRPLOBJ.

Just to clarify some language - when you say "called via a stored
procedure" do you mean that another program (the one that implements the
stored procedure) is calling the one you are replacing?

Thanks
Vern


On 11/20/2015 2:46 PM, Jeff Young wrote:

Vern,
Yes, I understand that, but my question was if the pgm being replaced is
called via a stored procedure, when the pgm ends with *inlr on, does the
stored procedure get cleaned up so that if another call to the stored
procedure uses that same job (i have no control over which job is used as
it is called from a web pgm) should it get the replaced pgm or the new
pgm?
if it were a case if an interactive job, and the pgm was called from the
command line, when the pgm ends with *inlr on, the next call from that job
would get the new program.
My question is should I expect the same behavior when called from a web
pgm
and one of the QUSRWRK jobs gets control?


Jeff Young
Sr. Programmer Analyst

On Fri, Nov 20, 2015 at 3:15 PM, Vernon Hamberg <vhamberg@xxxxxxxxxxxxxxx

wrote:

Hi Jeff

Jobs using a program that has been changed will use the one in QRPLOBJ
until the job ends. This is a bit of wizardry the system does, so that
jobs
don't blow up because a program has been changed. I suspect that the *PGM
object, which has a certain address in memory, is mapped to the new
library
- the job has resolved it to its pointer, so it doesn't matter anymore
what
its name is and which library it's in - a library is just a list of
objects, after all. Sort of!!!

HTH
Vern


On 11/20/2015 1:01 PM, Jeff Young wrote:

All,
I have an RPGLE program that is being called via an SQL Stored Procedure
from a web process. This program does some work and returns with *INLR
on.
The program currently specifies DFTACTGRP(*NO) ACTGRP(*CALLER) in its
attributes. If I change this program, the prior version is placed in
QRPLOBJ as it should. However, sometimes, one of the web processes gets
the QRPLOBJ version of the program.
Is this due to it not being in a named activation group, or could there
be
another reason.


Jeff Young
Sr. Programmer Analyst

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



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



This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2019 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].