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.
CICS INTERDEPENDENCY ANALYZER VERSION 5.3.0 2013/08/09:20.38.38 PAGE 1
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.
CICS INTERDEPENDENCY ANALYZER VERSION 5.3.0 2013/08/09:20.38.38 PAGE 2
THREADSAFE DETAIL LISTING FOR CICS TS 4.2
COLLECTION_ID APPLID Program Linkedit Execution Concurrency APIST Storage CICS LIB Dataset Name RENT
Date Key Protect Rel
---------------- -------- -------- ---------- ----------- ----------- ------- -------- ----- ----------------------------------
CMD Function Type Resource Offset Program Use Thread-
Type Length Count safe
---- ------------------------ ---------------- -------------------------------- -------- -------- ---------------
_collid_ IYDZZ42A TSTPGM00 0001-01-01 USER QUASIRENT CICSAPI ACTIVE 0670 CICSIAD.V51.TEST.LOADLIB 1
CICS DELETEQ TSQUEUE IATSTQ01 6D8 4460 1 Y
CICS INQUIRE PROGRAM TSTPGM01 151E 4460 1 N
CICS LINK PROGRAM TSTPGM02 A8C 4460 1 I
CICS LOAD PROGRAM TSTPGM03 79A 4460 1 Y* 2
CICS LOAD PROGRAM TSTPGM04 7BE 4460 1 Y*
CICS SET JOURNAL DFHJ03 212 4460 1 N
CICS WAIT EVENT 69A 4460 21 N
CICS WRITE JOURNAL 03 5A8 4460 83 Y
CICS WRITEQ TSQUEUE IATSTQ1 72C 4460 83 Y
Total CICS calls: 9 Threadsafe: 5 Non-Threadsafe: 3 Indeterminate Threadsafe: 1 3
Total CPSM calls: 0 Threadsafe: 0 Non-Threadsafe: 0
DB2 calls: 0 MQ calls: 0 IMS calls: 0
Dynamic Calls: 0 Threadsafe Inhibitor calls: 2
1 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.
- Linkedit Date
- The linkedit date of the program.
- 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.
2 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.
3 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.