Gerald,
I think this could be related to that message you posted recently
(quoted below), about "activation groups"...
If you are compiling ILE programs (either CLLE or RPGLE) with
ACTGRP(*CALLER) and somehow getting them to run in the *DFTACTGRP, that
could easily be a big part of your problems. ILE programs were never
intended to run in the *DFTACTGRP, unless you specifically compile them
with DFTACTGRP(*YES). Otherwise, even if you issue RCLRSC, that will
not be able to "reclaim" the resources of those ILE *PGMs.
_D__iagnosis
_You can use the DSPJOB command to display your own job, or another
user's job ... From the DSPJOB display menu, you can use option 12.
Display locks, and on the next screen, press F10=Display job record
locks to see if there are still records "locked", and from the main
DSPJOB menu, use option 14. Display open files, if active to see what
files, if any, are left open. Also, you can use option 11. Display call
stack, if active and on the display of the call stack, press
F11=Display activation group to see what activation group(s) programs
are running in. (You need to look at this option 11 while a user is
"deep down" in the application, and not after they have returned to
the main menu, to see the programs on the stack and their activation
groups.)
_Possible remediation steps:
_As a "next step" for any "top level" programs, (those called
directly from a "menu"), compile them with ACTGRP(*NEW) and that way, a
new activation group gets created automatically whenever they are
called, and any programs called by that "top level" program will run in
the same AG, so long as they are all compiled with
ACTGRP(*CALLER)... then, when the user returns from that "top level"
program to the "menu" the *NEW AG is automatically destroyed and
"cleaned up" -- all files opened in that AG are closed, record locks
released, etc.
If you still have some parts of the applications that are "OPM" and so
must run in the *DFTACTGRP, you can still do that -- just add a "layer"
or "jacket" -- a little OPM CLP program as the "top level" program that
gets called from the menu(s), and it then CALLs the actual OPM program
-- when that program eventually returns to this CLP program, the CL
program issues: RCLRSC LVL(*) to "clean up" any resources for any
OPM programs below this call level.
Any questions?
Hope t hat helps,
Mark S. Waterbury
> On 6/12/2017 4:25 PM, Gerald Magnuson wrote:
I believe I am having troubles with records remaining locked, when the user
gets back to the menu, but I can't find the program(s) that is causing
it.....
Is there a api for me to use, when the user get's back to the menu, to see
if they have any records locked?
the old menu system, was not ILE, and would issue a RCLRSC after it
returned from running an application..... I don't know if that did
anything or not?
> On 6/9/2017 4:34 PM, Gerald Magnuson wrote:
I have noticed that I am doing all kinds of "bad" things in respect to
activation groups...
I don't know where to start, other than maybe changing the command defaults
on CRTBNDCL
to DFTACTGRP(*NO) ACTGRP('<our_named_actgrp>')
we are kinda getting into the habit of compiling our RPGLE programs as
ACTGRP(*CALLER).
But since most of our CL and CLLE is set to *DFTACTGRP, most of our RPGLE
is running there as well....
we don't have /copy on our H specs, or any other real helps in place for
this....
what have others done to help with getting programs created with the
correct activation group settings?
As an Amazon Associate we earn from qualifying purchases.