Dan Greiner wrote
<snip>
At execution time, the only safe way to ensure that an instruction is present 
in the configuration (other than taking a punch on the chin if it's not) is to 
query whether the respective facility is installed by means of the STFLE 
instruction.
</snip>

If on z/OS you might be able to take advantage of the architecture level set 
(ALS) for each release.
The list of facilities upon which you may rely for each z/OS release are 
listed. I look here:
https://www.ibm.com/docs/en/zos/3.1.0?topic=system-identifying-server-requirements

If POp indicates that an instruction will get an operation exception if such 
and such a facility is not available, and you are allowing your product to run 
on a z/OS release that does not include that facility in its list, you 
could/would be putting your customer at risk. As Dan points out, some things 
are available on a machine but not surfaced to the user, depending on release 
and on environment (such as whether running as a guest under z/VM).

I'd imagine that very few instructions are worth determining at runtime to see 
if they are available and dual-pathing your code

Note of caution: IBM has issued a statement of direction about withdrawal of 
the transactional execution facility, even though it is part of the z/OS 2.4 
ALS.

Peter Relson
z/OS Core Technology Design

Reply via email to