It looks to me that you have sorted out what you want to monitor by setting up the counts, timers and data field in the MCT definition. [For everyone else, counts and timers are automatically recorded, started and stopped by the monitoring ID set in the MCT while data fields are supplied on the XC MONITOR calls dotted around in the code that is to be kept track of.]
If you are accumulating monitoring info which applies across CICS tasks, you need to give some thought as to where the source of this shared info resides and ensure that it is protected against double accesses (in CTS 2.2 multiple TCBs are around so the same bit of code has the potentialy to be running twice -- so one can end up in a double-update data-mismatch unless access is critical sectioned).
You should be aware that the monitoring data is treated in several ways. This type of monitoring data is associated with a CICS task in memory and then copied to SMF buffers at the end of the transaction (you can additionally set an earlier completion-type when a monitoring point with the DELIVER option is encountered which writes the data to a SMF buffer and resets the counters, etc.). This writing to an SMF buffer also occurs on XC SYNCPOINT commands. The actual data gets written to SMF when a SMF buffer gets full.
You process the data held in SMF offline using the supplied CICS jobs (DFHMNDUP to generate the names of the counters/clocks and DFH?MOLS to print the records on a selective basis) or something like the new CICS performance analyser (plug, plug) tool. There are vendor tools around as well.
Online, you can use (another blatently obvious plug coming up) the new CICS Peformance Analyser tool to see what is going on (other vendor tools are available).
Be aware that if you are using XC COLLECT STATISTICS MONITOR, you get the monitoring data currently being accumulated if the task has already sent some info to the SMF buffers (XC SYNCPOINT or DELIVER etc.) then this does not appear. You only get whatever is being built for subsequent transmission to an SMF buffer. This may not be relevant to you. It basically depends on the use of XC SYNCPOINTs in the application code. Consequently, this command only works for currently executing tasks.
If you want to ensure that everything including that previously sent to
the SMF buffers is available to you within the CICS region, then you will
have to get into looking and accumulating the info as it gets passed to SMF
via the relevant GLUE and merging that with the latest info obtained from
XC COLLECT STATISTICS (browsing for all tasks). This will probably be
overkill -- and you will almost certainly be better off by not doing this
This was first published in December 2002