Jim,
There is more to threadsafe than just the L8 TCB. If you notice the concurrency parameter on a program definition also supports "required". This would force the switch back to L8 or the Open TCB in use possibly L9 depending on the TASKDATAKEY the transaction is running under. This would not reduce the number of TCB switches, but ensure the amount of time on an open TCB is maximized.
However, to answer your question, each command is documented, I use a google search to find them and under the command syntax it will let you know if it is threadsafe or not. You have to make sure that you are looking at the documentation for the release you are running as this can change between releases. I have looked but have not found a comprehensive list of non-threadsafe commands by CICS release.
The other easy way to see TCB switches is to use CICS trace. Whether an AUXTRACE or take a dump after running a transaction (make sure you have a sufficiently large trace table), you will see if any commands issued by the program caused a TCB switch.
------------------------------
Ezriel Gross
------------------------------