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



Hi, Nathan:

I am (now) following this thread with great interest.

What did you specify for "Allow reinitialization" ALWRINZ on the CRTSRVPGM command? *YES or *NO

ALWRINZ(*YES) will allow you to "re-load" and "re-initialize" a service program so it looks like it was just re-activated anew ... read the help text for that keyword on the CRTSRVPGM command. This allows the system to "re-initialize" the static storage for a *SRVPGM, even though that *SRVPGM has already been "activated" within the AG. (This might be what Alan Campin is referring to as a "re-load"...).

Also, you should be using REPLACE(*YES) on CRTSRVPGM or UPDSRVPGM when replacing one that might be "activated" in some jobs with a new copy, so you don't "pull the rug out from under" those jobs. Just like with *PGMs, the old version is renamed and moved into the QRPLOBJ library that is normally cleared on IPL.

Review the ILE Concepts manual. There is "by design" no way to "deactivate" an individual service program (easily), especially if they ever get actrivated in the default activation group (*DFTACTGRP).

The whole point of an "activation group" whether named or *NEW, is to "draw a box" around some resources, such as, for a NEP, that should include any dynamic memory allocated from the ILE (per AG) heap, for the NEP itself and any *SRVPGMs it uses.Then, when you "tear down" the AG, either by exiting the NEP for a *NEW AG, or by issuing RCLACTGRP fora named AG, or at job end, the operating system will then "free" all of those resources allocated within that AG automatically.

You can save the pointer from the first RSLVSP, and then when you do a subsequent RSLVSP, you can compare the two pointers for "equality" to determine if they both point to the same object (version). If they are equal, the object has not been replaced or recompiled, and I would question the need or rationale for trying to "deactivate" it and restarting it.

Rationale?
At the "application" level, what are you really trying to accomplish by doing this? Just re-loading a *SRVPGM will not "free" all resources (heap space, etc.) allocated by a prior incarnation of that service program. You would still need to "tear down" the entire Activation Group to do that.

Why do you feel you need to do a RSLVSP to each *SRVPGM and then have to resolve the entry points (procedures) within them dynamically, versus just using the relatively newer *DEFER option on the BNDSRVPGM parameter of CRTPGM or CRTSRVPGM as of V6R1 and above?

The more you can tell us about the "application scenarios" (what you are trying to do and why), the better we may be able to suggest some real alternatives.

All the best,

Mark S. Waterbury

> On 5/8/2017 6:49 PM, Nathan Andelin wrote:
If what you are saying is true, nothing would ever get re-loaded
and the users would always have the the wrong version but that doesn't
happen. The new version is loaded and processing is done using the new
version

Your assertion that RSLVSP returns a new object pointer when services
programs are recreated and updated makes sense, intuitively. However, when
I used debug to display the code, the old code appeared instead of the new.
I should return and do more testing, based on your assurances.



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.