Implementing program timing
A call count and an accumulation of the CPU time for each program is maintained. The CPU time includes the processor time for all TCB modes for which the task was dispatched (RLS SRB time is not included). The call count is the number of times the program received control through a LINK or an XCTL. The count is not incremented when a program returns to a calling program or to CICS.
Program Timing accumulates the CPU time for all programs that are accessed by a transaction only when the Applications Programming Interface (API) LINK, XCTL and RETURN commands are used to pass or transfer control. CPU time used by CICS on behalf of a program's processing request (like file I/O, database accesses, storage gets/frees, and so on) is attributed to the program making the request. CPU time that is used by CICS to process a LINK or XCTL request is attributed to the program intended to receive control. A couple examples of CPU accumulation follow:
When program A links to program B, CICS accesses the PPT for the program's processing parameters. CICS may have to install a program definition if one does not exist and the Program Auto-Install Facility is active. CICS may also have to LOAD the program into storage before actually giving control to it. The CPU time that is used to perform these tasks is accumulated to program B.
When program A links to program B, a load failure might occur if B is not available. The minute the link to B is issued, the CPU clock for program B is started. In this case, program B will be reported with a use count and CPU time even though program B never received control.
Program timing information is maintained in data areas that are established by the MainView for CICS data extractor, so the extractor must be active. See Using CMRDETL data sets for information about the extractor.
Program Timing entries are identified by using the exclamation point ( !) as the type identifier. If you use ! as an identifier for a database through the MainView for CICS CMRCUEX user exit, change it to another value. See User exit interface (CMRCUEX) for more information.