Analyzing a sample threadsafe report

Analyzing the sample output produced by a summary report and a detail report.

The threadsafe report consists of a header page and one or more pages of program data. The header page lists the report options used to create the report and provides definitions for some of the terms used in the report. The remaining pages report on each program that meets the criteria specified by the report options PROGRAMNAME and REGIONNAME.

Figure 1. Example threadsafe report, header page
CICS INTERDEPENDENCY ANALYZER VERSION 6.1.0                                                      2023/12/18:20.56.43    PAGE     1
 Program Dynamic Analysis - THREADSAFE DETAIL LISTING FOR CICS TS

 Report options:
   COLLECTION_ID=*                 REGIONNAME=*         PROGRAMNAME=*         CICSLEVEL=      REPORT=DETAIL   LINESPERPAGE=60



 Definitions of Terms:

   'Threadsafe' calls are EXEC CALLS commands that do not cause a TCB swap.

   'Non-Threadsafe' calls are EXEC CALLS commands that cause a TCB swap.

   'Indeterminate Threadsafe' calls are EXEC CALLS commands where it cannot be determined if the call causes a TCB swap.

   'Dynamic calls' are calls to modules at execution time. Programs that are called dynamically take on the same environment
                   as the calling program.

   'Threadsafe Inhibitor calls' are EXEC CICS commands that need to be investigated further because they may prevent you from
                                defining your program as threadsafe. These commands are: ADDRESS CWA, EXTRACT EXIT, GETMAIN SHARED,
                                and LOAD HOLD.
        
Figure 2. Example threadsafe report, main body

CICS INTERDEPENDENCY ANALYZER VERSION 6.1.0                                                      2024/01/10:19.02.01    PAGE     2
 Program Dynamic Analysis - THREADSAFE DETAIL LISTING FOR CICS TS 6.1

 COLLECTION_ID    APPLID   Program   Execution  Concurrency  APIST  Storage  CICS  LIB Dataset Name                  RENT
                                        Key                         Protect  Rel
 ---------------- -------- -------- ----------- ----------- ------- -------- ----- --------------------------------- -----

                   CMD  Function                 Type             Resource                          Offset   Program  Use     Thread-
                   Type                                                                                      Length   Count   safe
                   ---- ------------------------ ---------------- --------------------------------  -------- -------- ---------------

 -collid_         C62C1C01 PROG0001 USER        QUASIRENT   CICSAPI ACTIVE   0740  CICSIAD.LOAD.PDSE                 ? ❶
                   CICS ADDRESS                                   CWA                                   2B0     2068         1    Y* ❷
                   CICS CANCEL                   REQID            REQST112                              40E     2068         1    N
                   CICS COLLECT                  STATISTICS       RECORD                                83C     2068         1    N
                   CICS CREATE                   TDQUEUE          TDQ1                                  928     2068         1    N
                   CICS DEQUEUE                  ENQNAME          TESTPPP...                            21E     2068         1    I
                   CICS DISABLE                  EXIT             PGM2                                  67A     2068         1    N
                   CICS DISCARD                  MQCONN                                                 8D6     2068         1    Y
                   CICS ENABLE GWA24             EXIT                                                   5FC     2068         1    N
                   CICS ENQUEUE                  ENQNAME          TESTPPP...                            1DC     2068         1    I
                   CICS EXTRACT                  EXIT             AFFINITY                              640     2068         1    N*
                   CICS FREEMAIN                 STORAGE          ADDR                                  3B2     2068         1    Y
                   CICS GETMAIN SHARED           STORAGE          ADDR                                  36A     2068         1    Y*
                   CICS INQUIRE                  PROGRAM          PGM2                                  448     2068         1    Y
                   CICS LOAD HOLD                PROGRAM          PGM2                                  2F2     2068         1    Y*
                   CICS PERFORM                  SSL              REBUILD                               57A     2068         1    Y
                   CICS RELEASE                  PROGRAM          PGM2                                  320     2068         1    Y
                   CICS RESYNC                   ENTRYNAME        ENTRY001                              86A     2068         1    Y
                   CICS SEND                     TEXT             SEND TEXT                             980     2068         1    N
                   CICS WAIT                     EVENT                                                  8A4     2068         1    N
                   CICS WRITEQ AUX               TSQUEUE          HELLO123                              276     2068         1    N
   Total CICS calls:         20  Threadsafe:            9  Non-Threadsafe:                     9  Indeterminate Threadsafe:         2 ❸
   Total CPSM calls:          0  Threadsafe:            0  Non-Threadsafe:                     0
                                 DB2 calls:             0  MQ calls:                           0  IMS calls:                        0
                                 Dynamic Calls:         0  Threadsafe Inhibitor calls:         4

 affn_col         C62C1C01 AFFINITY USER        QUASIRENT   CICSAPI ACTIVE   0740  CICSIAD.LOAD.PDSE                 ?
                   CICS ADDRESS                                   CWA                                   2B0     2038         1    Y*
                   CICS COLLECT                  STATISTICS       RECORD                                7E6     2038         1    N
                   CICS CREATE                   TDQUEUE          AFFI                                  8D2     2038         1    N
                   CICS DISABLE                  EXIT             PGM2                                  624     2038         1    N
                   CICS DISCARD                  MQCONN                                                 880     2038         1    Y
                   CICS ENABLE GWA24             EXIT                                                   5A6     2038         1    N
                   CICS EXTRACT                  EXIT             AFFINITY                              5EA     2038         1    N*
                   CICS FREEMAIN                 STORAGE          ADDR                                  91A     2038         1    Y
                   CICS GETMAIN SHARED           STORAGE          ADDR                                  36A     2038         1    Y*
                   CICS INQUIRE                  PROGRAM          PGM2                                  3D6     2038         1    Y
                   CICS LOAD                     PROGRAM          PGM2                                  2F2     2038         1    Y
                   CICS RELEASE                  PROGRAM          PGM2                                  320     2038         1    Y
                   CICS RESYNC                   ENTRYNAME        ENTRYNAM                              814     2038         1    Y
                   CICS SEND                     TEXT             SEND TEXT                             972     2038         1    N
                   CICS WAIT                     EVENT                                                  84E     2038         1    N
                   CICS WRITEQ AUX               TSQUEUE          HELLO123                              276     2038         1    N
          

❶ For the detail and summary report, the programs requested by the report options PROGRAMNAME and REGIONNAME are listed. These program entries contain the following information:

APPLID
The application ID for the CICS® region from which the Collector captured the program information. This field matches the report criteria specified by the REGIONNAME report option.
Program
The name of the program for which the information is reported.
Execution Key
The storage key of the program. Values are CICS®, USER, and NOTAPPLIC.
Concurrency
Indicates the concurrency attribute of the installed program definition. Values are: QUASIRENT and THREADSAFE.
APIST
Indicates the API attribute of the installed program definition. Values are: CICSAPI and OPENAPI.
Storage Protect
Indicates if storage protection was active for the program. Values are: ACTIVE or INACTIVE.
CICS® Rel
The CICS® release number for the region in which the program is running.
LIB Dataset Name
The 44-character name of the data set from which the program was loaded into the CICS® region.

❷ For the detail report, all of the commands that were collected by the Collector for each program are listed. These command entries contain the following information:

CMD Type
The type of command invoked by the program. Values are: CICS®, CPSM, Db2®, IMS®, and MQ.
Function
The command function, as specified in the CIU_CICS_DATA table.
Type
The resource type such as TS, or Program, as specified in the CIU_CICS_DATA table.
Resource
The name of the resource that the command was acting upon, as specified in the CIU_CICS_DATA table.
Offset
The offset of the command from the start of the program module.
Program Length
The length of the program module. Used to help determine the program version.
Use Count
The number of times that the command was run.
Threadsafe
The threadsafe status of the command. Values are:
Y
The command is threadsafe.
Note:
The asterisk (*) marks the threadsafe inhibitor call commands. These are commands that are potentially threadsafe, however you should investigate the command further because it might prevent a program from being threadsafe.
N
The command is not threadsafe.
I
The threadsafe status of the command in indeterminate. More investigation is needed to determine if the command is threadsafe.

❸A summary of the types of commands issued by the program are listed after each program entry.

CICS® calls
The number of EXEC CICS commands invoked by the program.
Threadsafe
The number of EXEC CICS commands invoked by the program that are threadsafe.
Non-Threadsafe
The number of EXEC CICS commands invoked by the program that are not threadsafe.
Indeterminate Threadsafe
The number of EXEC CICS commands invoked by the program that cannot be determined to be threadsafe or not.
CPSM calls
The number of EXEC CPSM commands invoked by the program.
Threadsafe
The number of EXEC CPSM commands invoked by the program that are threadsafe.
Non-Threadsafe
The number of EXEC CPSM commands invoked by the program that are not threadsafe.
Db2® calls
The number of Db2® commands invoked by the program.
MQ calls
The number of MQ commands invoked by the program.
IMS® calls
The number of IMS® commands invoked by the program.
Dynamic calls
The number of calls made to other modules by the program.
Threadsafe Inhibitor calls
The number of EXEC CICS commands invoked by the program for which you need to investigate the command further to determine if it prevents the program from being threadsafe.