On 2/6/2013 4:31 PM, Charles Wilt wrote:
On Wed, Feb 6, 2013 at 1:33 PM, Buck Calabro <kc2hiz@xxxxxxxxx> wrote:
The day that someone at MYCOMPANY decides they need STATIC storage
scoped not just to the job level, but to the activation group level is
the day they re-create that service program as ACTGRP(*CALLER). They'll
be doing work on it anyway in order to implement the new functionality
That statement doesn't make sense. changing the service program to
ACTGRP(*CALLER) would have no effect if every program using it still had
Right. The change would be systemic in nature. There would never be a
need to change to *CALLER unless the system design required local
variables scoped to activation groups within a job. OPM doesn't have
any concept of local storage whatsoever, so an application that's
gradually (beginner!) moving to ILE wouldn't need such scoping until
there was a fairly significant application redesign.
A more likely scenario is that you'd create a new program with
ACTGRP(MYPGM) or ACTGRP(*NEW) that tried to make use of procedures from an
existing service program that had ACTGRP(MYCOMPANY)...now you have trouble.
Now you have to change all *SRVPGM program (used by this new program) to
If the rule (enforced by the standard H-spec) is ACTGRP(MYCOMPANY) how
would this happen? Nevertheless, my real reason for replying is to try
to work out what 'now you have trouble' might mean. How many people use
STATIC in such a way that the static variable MUST NOT be segregated by
AG? If that's the case, then they're beyond being a beginner, and
certainly don't need a simple (and simplistic!) ILE check list.
Is it really so hard to remember 2 rules...
Instead of the one?
Nope! I myself have quite a few *CALLER service programs with a single
named AG for the calling programs. What I wanted to do is dispel the
pernicious notion that getting started in ILE is complex and error
prone. Trying to distil the simplest approach, if you'll allow me the
vanity. I'm enjoying the discussion very much; thank you!