We've already introduced the new CICS asynchronous API, and explained its potential for creating a new class of faster, more responsive applications — what we haven't mentioned yet is that with the new CICS TS V5.4 open beta release we're also making it easy to monitor and track your asynchronously running tasks.

In another article, Alison explained the benefits of transaction tracking: by allowing system programmers to see the origin of and relationships between tasks, it's that much easier to pinpoint problems and monitor performance. Previously, transaction tracking only worked across interconnected regions, counting the 'hops' between tasks as they flowed across regions, but we've made some improvements!

To enable easy management of asynchronously running parent and child tasks — which all run within the same CICS region — we've added new 'previous transaction' tracking capability, which works just the same as the transaction tracking outlined in Making transaction tracking work for you. Instead of tracking relationships across regions, this new functionality tracks relationships within a single CICS region, effectively showing you task 'depth' in any given region, and the parent-child relationships within it. This transaction tracking works for all locally attached tasks, such as those initiated with EXEC CICS START commands, in addition to tasks initiated by the EXEC CICS RUN TRANSID command.

Viewing task association data

You can view task association data in many ways. To give two examples: using the tabular view in Explorer, or in SMF records. For more detail about using the Explorer view, see Alison's article. When running DFH$MOLS against your SMF 110 records, your transaction tracking data might look something like this for a parent transaction ASPA:

DFHTASK  P031     TRANNUM          0000042C                                           42
DFHCICS  C363     OTRAN            C1E2D7C1                                       ASPA    
 
DFHCICS  C373     PHNTWKID         00000000 00000000                                      
DFHCICS  C374     PHAPPLID         00000000 00000000                                      
DFHCICS  P376     PHTRANNO         0000000C                                            0  
DFHCICS  C377     PHTRAN           00000000                                               
DFHCICS  A378     PHCOUNT          00000000                                            0  
 
DFHCICS  P481     PTTRANNO         0000000C                                            0  
DFHCICS  C482     PTTRAN           00000000                                               
DFHCICS  A483     PTCOUNT          00000000                                            0

And like this for a child task, ASCH:

DFHTASK  P031     TRANNUM          0000043C                                           43
DFHCICS  C363     OTRAN            C1E2D7C1                                       ASPA    
 
DFHCICS  C373     PHNTWKID         00000000 00000000                                      
DFHCICS  C374     PHAPPLID         00000000 00000000                                      
DFHCICS  P376     PHTRANNO         0000000C                                            0  
DFHCICS  C377     PHTRAN           00000000                                               
DFHCICS  A378     PHCOUNT          00000000                                            0  
 
DFHCICS  T480     PTSTART          D169DEEC8300D482                         2016/09/28 09:04:29.011981
DFHCICS  P481     PTTRANNO         0000042C                                           42  
DFHCICS  C482     PTTRAN           C1E2D7C1                                       ASPA    
DFHCICS  A483     PTCOUNT          00000001                                            1

Here, you can see that our child ASCH has a PTTRAN value of ASPA, which identifies its parent, and PTCOUNT of 1, which tells us that it is one level 'deep' within the CICS region (i.e., that it is a child, but not a grandchild). If ASCH had children of its own, they would have a PTTRAN value of ASCH, and a PTCOUNT of 2, which would identify those children as grandchildren of ASPA.

Visualizing task relationships

The diagram below represents how association data passes between tasks. Both previous hop counts and previous transaction counts are represented, with previous hop counts flowing horizontally between CICS regions, and previous transaction counts flowing vertically down within a CICS region. In this example, association data moves between regions using a combination of distributed program link (DPL) and function ship (FS).

transaction-tracking-architecture-diagrams-4-page-001

Using task association data

By exposing the relationships between tasks, transaction tracking can be used to troubleshoot hanging or suspended tasks, to generate task history for audit purposes, and to optimize task performance by analyzing any bottlenecks or delays. In combination with the CICS asynchronous API, there’s great potential for improvements and efficiencies in your CICS programs.

For more details on how previous transaction tracking works, see the IBM Knowledge Center.

Join The Discussion

Your email address will not be published. Required fields are marked *