MVS provides no such serialization. A GLOBAL=YES object "just is." It could be entered any way one chose: BALR, or LINK, or ATTACH, or its data could be referenced with L and MVC.
Here is the problem @Peter is referring to: once you make the code available "globally" there is no general, supported way to put the toothpaste back into the tube. You never know when some task is going to call the code, and frankly, you don't know but what some task has called the code and halfway through using it has become "not dispatched" but might wake up at any time and continue using it. What I am about to say is not IBM's supported position, but here goes. If you totally "control" (it's your code, in other words) all of the potential callers, then you could have some globally accessible (outside the module in question) "switch" that says "stop using the affected module." You -- the management code -- could set that switch and then wait "a little while." How long? Two seconds might be enough. Five seconds might be better. And then delete the module. Here is the rub, and here is where IBM's position is different than what I wrote. Notice that I say "might." There is NO WAY OF KNOWING. Maybe you wait five seconds, and for some reason one of the using tasks gets delayed by six seconds and continues or starts referencing the module after it is deleted. With good luck it gets a S0C4. With bad luck -- or clever enough malice -- there is now some other code at that address and who knows what happens. That is why *ever* deleting a "common" module is a system integrity violation. Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Paul Gilmartin Sent: Friday, August 27, 2021 8:39 AM To: [email protected] Subject: Re: LOAD with ADDR On Fri, 27 Aug 2021 08:36:10 -0400, Peter Relson wrote: ><snip> >LOAD with GLOBAL=YES also performs the same function flawlessly -- and >comes with the additional feature of automatic cleanup at termination >time (assuming that's the behavior you want). ></snip> > >The "automatic cleanup at termination" is in almost 100% of cases >considered a system integrity error (or at least a RAS error) since it >requires a lot of care to be certain that no code can be executing within >that address range at the time of your termination ... > Could the GLOBAL=YES object be entered by LINK? If so, should CSV have a use count preventing cleanup? "that address range" should include temporarily leaving that range by CALL, etc. -- gil ---------------------------------------------------------------------- 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
