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
