Hello Peter, Been a while .. my apologies ..
I do have a task for TEF that's been on my plate but .. I have not been able to touch it in for quite a while .. got pulled off for higher priority tasks ... since my code is proprietary, all I can really say is that my TEF usage would be strictly for VSAM (non RLS) .. at this point in time .. Ironically .. what you mention was / is, one of the biggest reasons for my project ... in short, I was trying to eliminate as many 'previous locks' w/code replacements, as possible .. I have PLO's but want to take away that complication for anybody having to maintain my code in future .. I've used TBEGIN and vaguely remember reading up on TBEGINC but never ever tried it .. I'll have to hit the foils again .. Kind Regards, Jim Thomas -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Peter Relson Sent: Sunday, March 05, 2017 09:50 To: [email protected] Subject: Re: Transactional Execution - anybody used it? As you might assume, the operating system uses transactional execution. A caveat: you cannot use it unconditionally. Even if you know you are on the right machine. One reason for that is that it cannot be used if z/OS is running on/under VM. Another is that we have given the customer a knob to ask that transactional execution not be used when they are migrating to a new machine and really want, first, to make sure that the machine works before worrying about whether new code paths in the software also work. This is the MACHMIG statement of the LOADxx parmlib member. You must pay attention to the PSA/CVT bit (you can choose which you want to look at) which is on when available. Transactional execution is used, for example, within supervisor, IOS, RSM. It is what makes "contractible CPOOL" possible and available. We tend to look for cases where we can use TBEGINC rather than TBEGIN. That is because any use of TBEGIN requires accepting the possibility of too many aborts, and providing "traditional serialization" in the fallback path. And this means that the user of a transaction must also serialize against the user of "traditional serialization". "Traditional serialization" could be the local lock, an ENQ, a latch, etc. One of the use cases is to avoid coarse-grained serialization when fine-grained serialization will do. The LOCAL lock is a case of coarse-grained serialization. It serializes lots of stuff. But sometimes you might be using it to serialize only "your stuff". Yet you are still contending for the resource with other users of the LOCAL lock, so could be adversely impacted by those cases (and your usage could adversely impact others). If you can use TBEGIN(C), you no longer need to contend with other users of the LOCAL lock. This is a performance-related facility. Performance needs should dictate how much you choose to use 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 ----- No virus found in this message. Checked by AVG - www.avg.com Version: 2016.0.7998 / Virus Database: 4749/13836 - Release Date: 01/25/17 Internal Virus Database is out of date. ----- No virus found in this message. Checked by AVG - www.avg.com Version: 2016.0.7998 / Virus Database: 4749/13836 - Release Date: 01/25/17 Internal Virus Database is out of date. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
