You know who owns it because its defined as a PC and therefore has an entry
table assigned to it. Looking in the entry tables for a program is just as
common a practice as looking for "identified" programs. So finding PC
routines just requires different methods. Besides, if this is a stacking PC
which is the only type I use, the linkage stack has everything needed to
associate the call with the PC routine including the PC number. I rarely use
anything but PC routines anymore since most of the stuff I write is RMODE64.
The IPCS status displays the entry tables for that reason. And it doesn't
matter what the AC= is for a LPA program. MVS is going to treat it as
authorized simply because it's in the LPA. I discovered that the hard way. 

To say that you can't ever free a PC routine is untrue. Almost any space
switching PC will terminate as soon as the server that defined it
terminates. So these can be released and refreshed as needed every time the
server recycles. Certainly, there are many PC routines that can't be freed.
But if a PC routine is designed to be called as part of an API or UI, then
API/UI recovery can easily recover the error and report it as the server
terminating. Certainly, any PC routine that is defined as non-space
switching  system PC routine that can be called without any provided
interface probably cannot be freed. However, a new copy can be loaded and
redefined which is why I like reusable LXs. 

In my book, PC routines are the only way to fly. They can be called in any
amode, any rmode and any environment other than SACF 256 and 768 which are
very rarely used. And there are as many ways to define and use them as they
are people that define and use them. I was just making a suggestion. Peter
is making another. I imagine Peter has trusted methods that work. I know
that I do as well.  If you're going to define a PC, I suggest you don't
allow the old dogma to get in your way. Find the method that works for you.
PC routines are where MVS has been headed for a long time. 

Kenneth

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On
Behalf Of Peter Relson
Sent: Monday, July 08, 2013 6:45 AM
To: [email protected]
Subject: Re: Dynamic LPA Services

0D6 - 22: A linkage index (LX) translation exception occurred; the program
interruption code is X'22'. 
This cannot have anything to do with the location of the target routine.

Things added to dynamic LPA are part of LPA. They are built out of (E)CSA. 
What they are not part of are PLPA, MLPA, FLPA which are not built out of
(E)CSA.

The approach of using "directed load" is frowned upon. It does not buy
anything and has detrimental RAS affects, since the storage area being used
as the PC target is now not known by name and thus is harder for any
diagnostician to determine who owns it. There is just about no reason any
more to do LOAD with ADDR to CSA for code.  P.S., do not use LOAD with
GLOBAL=YES if your address space could ever terminate without wait-stating
the system, as the system frees that storage upon such termination.

It is true that someone "could" LINK to the name since there is a name, but
that is never of concern to a properly written program. The LPA routine
should not be marked as AC=1. 

By the way, there are extremely few cases where a PC routine can *ever* be
freed without introducing a system integrity problem. Do you truly know (as
opposed to just hope) that no one is within the routine at the time you want
to free it?

Peter Relson
z/OS Core Technology Design

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email
to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to