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



On 12-Jul-2017 10:38 -0600, Alan Campin wrote:
On Wed, Jul 12, 2017 at 6:55 AM, Glenn Gundermann wrote:
On 12-Jul-2017 04:23 -0600, Gad Miron wrote:
[…] We have here a (admittedly primitive) small home grown
authorization system where users are authorized to certain PGMs
(and to PGM's features) in certain Libraries.

Like: User Bob is authorized to LIB1/PGM_A

this system is implemented by having each PGM call (in *INZSR) a
certain authority checking program (passing it's *PSSR's User,
PGM and Library) that returns a pass/fail indication
This works fine until some programmer compiles a PGM while it is
in use by some user.
The compile replaces the PGM and moves the original PGM obj to
QRPLOBJ

The scenario is as follows:

User has authority to LIB1/PGM_A

PGM_B calls PGM_A

PGM_A checks authority of user to LIB1/PGM_A – User passes the
check.

LIB1/PGM_A is compiled. PGM_A in LIB1 is replaced, original PGM_A
is moved to QRPLOBJ

PGM_A returns to caller (PGM_B)
[…]


Instead of leaving it to the system to move the existing program to
QRPLOBJ, you could have the promotion program do it as part of the
process:

- Delete any older versions of QRPLOBJ/PGM_A
- Move the current version<lib>/PGM_A to QRPLOBJ
- Compile PGM_A


What happens if you delete the program instead of using QRPLOBJ?

*_>_O DLTPGM PGM(@OBJLIB/@OBJNAM)
*_>_R CRTBNDRPG PGM(@OBJLIB/@OBJNAME
*_>_C SRCFIL(@SRCLIB/@SRCFIL) SRCMBR(@SRCMBR)


IIRC, use of Delete Program (DLTPGM), against the PGM_A in *either* the LIB1 or QRPLOBJ [the two most recently quoted replies], whilst that program is in use by a job, that may cause the process using that program, to terminate with a machine check [I do not recall the VLog major/minor codes; ¿and ends with effectively no cleanup?]. While I do not think that termination is an issue when the PGM_A would otherwise "returns to caller (PGM_B)" [because the RTX aka Return is in memory], that termination is certain if/when whatever PGM_A called would try to return to PGM_A [because the RTX aka Return is to a program that has since been destroyed]. Use of the Replace Object feature is quite preferable, over the potentially negative consequences of the process terminating.?.?


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.