While single stepping through a non-terminal task, PF10 is not displaying the next line of code with any consistency. For example, a COBOL PERFORM statement may "jump" out of the perform and then return but not necessarily to the next statement in sequence. Subsequent executions of the same program may not experience this problem and execute normally.
Any non terminal task that is triggered externally from CICS may experience these same symptoms. In this specific case, the transactions are generated and accessed through proxy servers set up to be load balanced. If there is a long delay while monitoring the program with InterTest, a second request is sent from the proxy server. This results in a second transaction (task) being initiated within CICS for the same program causing InterTest to alternate between the two transactions.
Debugging a non terminal task using InterTest for CICS while monitoring a program that is not compiled with the OPTIMIZE compile option.
Since the transaction does not originate from a terminal directly connected to the CICS region (ie. a non-terminal task) monitoring must be set up to route the debugging session to a designated terminal. Since the "twin" task originates outside of CICS, InterTest is unaware that this is a new task and will monitor this new task as well.
To confirm that this is the case, press PF12 to display the MONITORING STATUS screen. If the screen shows both the "Waiting at breakpoint" and "Currently monitoring" entries, then the terminal is handling several debugging sessions. The currently attached session is listed under "Waiting at breakpoint" and the other debugging session(s) are likely waiting to get attached and are listed as "Currently monitoring". The tasks can switch back and forth with each step (PF10) depending upon CICS and its dispatching logic.
There are two simple solutions:
- Prevent the transaction from starting while a programmer is debugging the related program;
-- One of many possible causes could be load balancing of proxy servers that route the web requests to the CICS region.
-- Try removing the load balancing
- Alternatively, remove the initial breakpoint the moment it gets hit, and then continue single stepping through the program as before.
-- Removing the initial breakpoint will allow InterTest to single step through one unique task.
Details on setting up monitoring of a program that is not initiated from a CICS terminal can be found in the section entitled "Customize the Source Listing Profile" within the
The documentation above lists multiple settings for the "From" terminal, which is nothing more than a pseudo terminal used by InterTest to simulate a terminal that initiates the task. Technical document TEC604206 discusses each setting and provides details about when each should be used.