MacKinney Systems, Inc.

CICS Task Flow Recorder (CTR) is a software tool that records the entire program flow path and sequence of events for selected CICS tasks.  

None of the CICS monitors or debuggers available today offers a detail level and clarity that’s even close to what CTR provides.  

Tasks that are being recorded run normally, without CEDF and without breakpoints. Users who run these tasks may not even know they are being recorded. CTR records and displays every:

  • CICS command, its major operand and offset in the program.
  • DB2, ADABAS, and DL/I calls or any other remote service.
  • Subroutines invoked via EXEC CICS LINK, dynamic call, or even static call.
  • Every TCB switch.
  • Program abends, and invocations of “handle abend” labels.
  • All of the above, within mirror tasks that were originated by the recorded task, and ran in other regions.

For each of the event types listed above, for each linked program, and for program code fragments between CICS commands, CTR measures the elapsed time.  Hence, it is very easy for users to pinpoint runtime bottlenecks.

The product is activated easily by every developer, without the involvement of a systems programmer. The event list of a recorded task is available instantaneously. If you record a long-running task, you can watch its execution flow while it is still running.

Suppose CTR is currently inactive in your CICS region, and you have a long-running task that seems to hang up in a loop. You can activate CTR and have it record the task in question beginning now. CTR is controlled from the browser via a cutting-edge Web GUI. CTR can also record the actual content of commarea, VSAM file records, TS QUEUE or TD QUEUE, screen input and output, containers, DB2 query results, and Adabas record buffers.  When, for example, you examine the event list of a task and encounter a WRITE command, you also see the content of the record that had been written (in character and hexadecimal formats).

The recorded content can also be mapped and shown field by field, using the COBOL structure (copybook) associated with the record. 

CTR is capable of showing every paragraph and section the recorded COBOL program has reached; even when that paragraph contains no CICS commands.

CTR can trace the values of specific working storage and linkage section variables during program execution. CTR can take full working-storage snapshots upon each CICS or database command. Each snapshot is saved, so later on, users can examine what the content of any working-storage variable was during every CICS call. The working storage is displayed field by field. No breakpoints are necessary. The recorded tasks run normally, at a full speed, and the information is captured for later viewing.

CTR can also display the “Delta working-storage”, i.e. only the variables that had changed between two consecutive snapshots.

CTR is activated upon request, for the desired period of time or the desired number of tasks to record, though it may also be activated for prolonged periods.

In order to lower the amount of data being logged and saved, it is possible to instruct CTR to only retain tasks that either abended or ran longer than a given threshold. Full MRO/Sysplex capability. When a recorded task issues a remote LINK that causes a mirror task to run in another CICS region, that mirror task is recorded as well. When the sequence of events of the parent task is displayed, the events that occurred in the mirror tasks are shown as well, in chronological order, i.e. right after the LINK commands that invoked them. When CICS tasks use Dynamic Call to other programs or even Static Call to other CSECTS within the same module, CTR detects the entire sequence of CALL and GOBACK commands and adds these commands to the event log. CTR also records and displays CICS commands that are not part of your program code, but was inserted into your task by CICS itself. These commands include LOAD, PUSH HANDLE, POP HANDLE, GETMAIN, FREEMAIN, WRITEQ TD, and others, which most developers are not even aware of. Occasionally, related CICS tasks that run at the same time communicate with each other. They synchronize their actions and wait for each other using ENQ, DEQ, DELAY, CANCEL, WAIT, POST, SEND, RECEIVE mechanisms. CTR is capable of presenting its event lists together, side by side, in chronological order. Such presentation helps developers understand the synchronization between the tasks, the exact moments in which one task had yielded control to another, and the reasons for potential deadlocks.

When software developers are puzzled why two instances of the same transaction vary significantly in their run time, flow path, or the number of events, they can use CTR’s fantastic “Diff” utility.  Diff compares two tasks, event after event, and highlights the differences; similarly to a source-code version comparator.

CTR can also compare the values of two records, and display the differences in either a dump format or field after field, using the records’ copybook. For example, the recorded program issues READ UPDATE and then REWRITE. CTR can show you exactly which fields got changed.

CTR can also compare records from two different tasks.