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

Reply via email to