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
