If your application is not designed to use PLO for serialization, it'll definitely not work for you. I use PLO for serialization because of issues with locks that you are describing (system affects) and many others. All my code can run as SRBs but unlike what you describe I almost never acquire locks. I always use PLO except when interfacing with MVS services that require locks which I do rarely. Besides you can't mix CS with PLO meaning you would have to convert every CS affecting that chain. Sounds to me like you're stuck with the CMS lock. And if it’s a process done frequently, it will have a system impact; a significantly greater impact than a PLO serialized one.
The thing I don't understand is you're statement "My problem is that a process comes in and removes the control block chain while another process is suspended and attempting to update the chain. When the updating process wakes up S0C4!" If you mean that you're releasing the storage for the chain, the process doing the release could use a PLO to set the chain pointers to 0 and in that process update the swap word. The second process will then get a CC forcing re-drive and it'll discover the chain is now 0. In that case, that would probably mean that you would need to use PLO Compare and loads for every reference to those chain pointers or (my preference) you would have a retry point detect the 0c4 and realize the chain has been released and just continue . I really don't see the big deal with an 0c4 in this scenario (should happen rarely). The PLO process does not update anything until the PLO executes so no harm no foul. Again, if the application is not designed to use PLO, it won't work. And you're not slow. When I first started using PLO almost 10 years ago. I spent days writing test cases with special traces so I could see what was happening. The whole time I had the POM open to the PLO instruction reading it over and over. Now, I consistently code PLO without much thought. If you chose to spend time learning the PLO, I think you'll find it vastly superior to locks (no restrictions) and applicable to 99%+ of all serialization scenarios you encounter provided you design the application to use PLO from the start. Kenneth -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Donald Likens Sent: Thursday, November 07, 2013 8:33 AM To: [email protected] Subject: Re: Serialization without Enque It has taken me this long to mostly understand PLO... I must be slow. Now that I understand it (mostly) I am pretty sure it will not work for me. My problem is that a process comes in and removes the control block chain while another process is suspended and attempting to update the chain. When the updating process wakes up S0C4! That is why I was looking at using locks. If the process updating the chain holds a lock and the process removing the chain needs that lock to update the pointers this would not happen. So back to my original question: My code must be able to run in SRB mode and with locks held. I have a situation where I need to serialize processing and cannot use CDS because the two addresses being updated cannot be next to each other (because I use CDS with these two addresses with other addresses). I have attempted to use a combination of CS instructions to resolve this problem but it does not work. I know this will work if I use a CMS lock but I am concerned about affecting the whole system. Any advice? ---------------------------------------------------------------------- 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
