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



Mark S. Waterbury wrote:

Normal activation groups exist "per job" or exist within a job, so there is no "sharing" between jobs. Note however that the executable code (the pages containing the actual RISC instructions) are "shared" in the vast single-level storage address space, and because the compilers always generate reentrant code, these pages are "read-only" and cannot be modified, and so they can be shared. But the "activation" is really about the allocation of any static storage for a *PGM or *SRVPGM, and this is dynamic storage that exists within the temporary storage of a given job, and within some activation group within the job (either the *DFTACTGRP or some other ILE activation group).

Hi, Mark.

Okay, so now the scope is better defined in this thread. And that brings us to this earlier element: "F is already activated, so just resolve pointers within service program C that point to procedures within F".

Now, CRTSRVPGM allows two values for ACTGRP() -- Name or *CALLER.

That would seem to be an interesting area for service programs when the *CALLER runs in *NEW.

I've used a named ActGrp for a service program that acts as a storage container for values that I want to retrieve later in a job. Handy.

I haven't referenced my own service programs from a *CALLER in a *NEW ActGrp. That hasn't been needed yet by me. That would seem to be a tricky performance issue if *NEW wasn't used carefully, most especially if the earlier mentioned service program reference chain was complex. (Nor have I referenced them from an ActGrp that is reclaimed very often.)

So, it goes back to the *PGM that actually references the service program. ...At least, the *PGM in a given ActGrp. When a job has multiple ActGrps and the service program runs in *CALLER, the reference chain may cause multiple activations of the service programs in the chain -- one for each different calling ActGrp and even for each reactivation of such ActGrps.

But if the *PGM that binds the *SRVPGM isn't called, then no *SRVPGM activation happens at all. That CALL might be in an IF-statement and never triggered.

And that all leads me to consideration of creating service programs to have a named ActGrp of their own, perhaps groups of *SRVPGMs in a few ActGrps. I.e., blind reliance on *CALLER for *SRVPGMs should be reviewed if performance will be an issue.

Hope that helps.

Maybe; we'll see. I mean, your discussion is excellent -- my comprehension is the obstacle in this area. My daily experience with activations is kept within a pretty strict scope since we're not exactly involved with general business apps. Our activation structure was fairly well settled a number of years ago and there've been very few reasons to make changes.

As it happens, though, there is a particularly nasty issue that needs resolution involving hundreds of millions of calls to an API. So, I'm getting ready to learn more than I ever wanted to know.

Tom Liotta


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