InterTest™ and SymDump ® 11.0
  --->      172   2  1           CALL POPULATE_GRAPH ( J );
  --->      173   2  1           END;

                           /* CHEQUE_LINE                 = ' ';             */
  --->      174   2  0        CHEQUE_AMOUNT               = TOTALGROSS;
  --->      175   2  0        RETURN;

  --->      176   2  0     END PAY_CALC;

Issue the SLOW command to execute one statement every two seconds. As the program resumes execution, you
are able to see the changing values of YTD and X_AXIS_YTD. In this demo, you are going to halt execution when the
X_AXIS_YTD value is MAR by pressing the ATTENTION key.
Follow these steps:
1.Type the SLOW 2 command and press Enter.
The application initiates a time-controlled execution of CAMRPLI, at a rate of one statement every two seconds.
2.When the value of X_AXIS_YTD in the keep window is MAR, press the ATTN or PA1 key. Try the ATTN key first.The
Attention Intercept panel displays, as shown in the following panel. A sample Attention Intercept panel follows:
  CAMRPLI  ---------- CA InterTest Batch ATTENTION Intercept -------------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000185 000184 000183 000182 000177 000172 000173 000186 000185 000184
 0

 -------------------------------------------------------------------------
       1F1A84EF NP-S  000090 02 YTD                          +0256273.52
       1F1A84F7 AN    000089 03 X_AXIS_YTD                   MAR


-------------------------------------------------------------------------

  0003      182   2  0        X_AXIS_YTD                  = MONTH_ITEM ( I );
  0003      183   2  0        X_AXIS_R ( I )              = TOKEN_ITEM;
  0003      184   2  0        YTD                        = YTD + MONTHLY_AMOUNT
  0002      185   2  0        TOTALGROSS                  = YTD;
  0002      186   2  0        RETURN;

  --->      187   2  0     END POPULATE_GRAPH;

  --->      188   1  0     BILL_CALC: PROC;

            189   2  0        DCL   I                       FIXED BIN(15);
            190   2  0        DCL 1 BILLS_BILLS_BILLS,
                                    3 BILLS_MONTHLY,
                                      5 BILLING_AMOUNT (12) FIXED DEC(7,2)
 INIT

Review what you just did.
 613


InterTest™ and SymDump ® 11.0
•You opened a keep window for two variables whose values you wished to view and compare.
•You used the command slow 2 to have the application slowly execute the program. However, during the program
execution, you could monitor the values of the variables in the keep window.
•You used the ATTENTION or PA1 key to stop program execution, and the Attention Intercept panel displays.
This combination of using keep windows, the slow command, and an Attention Intercept lets you carefully control and
monitor your program execution, while tracking the values of specific variables.
NOTE
The Attention Intercept panel is only displayed when the user presses the ATTN or PA1 key and then the
application executes a statement in a program that is currently being monitored.
Remove the Keep Window
Before returning to the Options Menu of the advanced demo, remove the keep window.
Type the REMOVE ALL command and press Enter.
The application removes the keep window for YTD and X_AXIS_YTD on the Attention Intercept panel.
Continue Execution
Type GO and press Enter to continue execution.CAMRPLI resumes execution, and displays the Options Menu.
This concludes Option 1: Time Controlled Execution. Select another option and go to the appropriate section, or exit the
demo using PF3.
Option 2 Set Conditional Breakpoints
This option shows you how to set and use conditional breakpoints.
NOTE
Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries and you
have the Demo Session Options Menu displayed on your screen.
Follow these steps:
1.Select option 2 and press  Enter.
CAMRPLI displays the screen that describes what occurs in this part of the demo session.
2.Press  Enter.The application halts CAMRPLI at an unconditional breakpoint. The statement at the breakpoint is
highlighted.


highlighted.
3.Access the screen used to set conditional breakpoints. From this screen, you can set both the conditions and any
commands you want executed when the specified condition is met.
4.Type the COND command in the Command field and press Enter.
The When panel displays. WHEN is a synonym for COND.
5.Make the following entries on the When panel and press Enter:
 ----------------------- CA InterTest Batch WHEN PANEL -------------------------
 OPTION ===>S

    S - SET A WHEN CONDITION
  R - RESET A WHEN CONDITION
    L - OR BLANK, LIST THE WHEN CONDITIONS

 SPECIFY DATA AREA NAME(S) AND COMPARISON CONDITION:
    WHEN-NAME    ===> ytdcond
    DATA-AREA-1  ===> subtotal
    OPERATOR     ===> ge        (EQ, NE, LT, GT, LE, GE, =, <>, <, >, <=, >=)
 614


InterTest™ and SymDump ® 11.0
    DATA-AREA-2  ===> 600.00
    AFTER        ===> N         (Y/N)

 COMMANDS TO BE EXECUTED AT WHEN CONDITION:
 ===>  k subtotal; set totalgross = 2000; k totalgross

The application displays the following message in the top right corner of the When panel: WHEN CONDITION SET.
6.Press PF3 to exit the When panel.The application brings you to the previous Breakpoint Intercept panel.
7.Continue execution by typing GO and pressing Enter.CAMRPLI resumes execution until the condition you set for the
YTDCOND breakpoint is met; when the value of SUBTOTAL is greater than or equal to 600, InterTest Batch halts
execution, and executes the commands you entered for the conditional breakpoint; it displays a keep window for
SUBTOTAL, sets TOTALGROSS to 2000, and then displays TOTALGROSS in the keep window. Your screen should
look like the Intercept panel in the following screen.
A sample intercept panel showing condition YTDCOND has been met follows:
  CAMRPLI  ---------- CA InterTest Batch WHEN YTDCOND BEFORE Intercept ---------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000193 000192 000194 000193 000192 000194 000193 000192 000191 000188
 0

 -------------------------------------------------------------------------
       1F1A84E6 NP-S  000101 02 SUBTOTAL                     +00971.68
       1F1A84EA NP-S  000090 02 TOTALGROSS                   +0002000.00

 -------------------------------------------------------------------------
  0003      192   2  1          SUBTOTAL                 = SUBTOTAL + BILLING_A


0002      193   2  1          BILL_YTD                  = SUBTOTAL;
  0002      194   2  1        END;
  --->      195   2  0        RETURN;

  --->      196   2  0     END BILL_CALC;

  --->      197   1  0     INITIALIZE_TABLE: PROC;

            198   2  0        DCL (I, J)                   FIXED BIN(15);

  --->      199   2  0        DO I = 1 TO 2;
  --->      200   2  1          DO J = 1 TO 9;
  --->      201   2  2            STATE_NUMBER ( I )      = I;
       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
           STMT LEV NT
  --->      202   2  2            COUNTY_NUM1 ( I, J )    = I;

Now remove the conditional breakpoint before continuing.
Follow these steps:
1.Return to the When panel by entering the WHEN command and pressing  Enter.
The When panel is displayed.
2.Type the following on the When panel and press Enter:
 ----------------------- CA InterTest Batch WHEN PANEL -------------------------
 OPTION ===>R
 615


InterTest™ and SymDump ® 11.0

    S - SET A WHEN CONDITION
    R - RESET A WHEN CONDITION
    L - OR BLANK, LIST THE WHEN CONDITIONS

 SPECIFY DATA AREA NAME(S) AND COMPARISON CONDITION:
    WHEN-NAME    ===> ytdcond
    DATA-AREA-1  ===>
    OPERATOR     ===>           (EQ, NE, LT, GT, LE, GE, =, <>, <, >, <=, >=)
    DATA-AREA-2  ===>
    AFTER        ===> N         (Y/N)

 COMMANDS TO BE EXECUTED AT WHEN CONDITION:
 ===>

The application displays the following message in the top right corner of the When panel: WHEN DELETED.
3.Press PF3 to exit the When panel.The application brings you to the previous Intercept panel.
Remove the Keep Window and Continue Execution
Remove the keep window before continuing execution.
Type the REMOVE ALL command and press Enter.
The keep window is removed.
Return to the Options Menu by continuing execution.
Type GO and press Enter.CAMRPLI resumes execution and displays the Options Menu.
This concludes Option 2: Conditional Breakpoints. Select another option and go to the appropriate section, or exit the
demo using PF3.
Option 3 Update Source Code
This option illustrates how you can use the ISPF split-screen capability from any screen. One way to use this feature is to
update your source code as soon as you find errors during your test session.
NOTE
Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries and you
have the Demo Session Options Menu displayed on your screen.
Follow these steps:
1.Select option 3 and press Enter.


Follow these steps:
1.Select option 3 and press Enter.
CAMRPLI displays the screen that describes what occurs in this part of the demo session.
2.Press Enter.The application halts CAMRPLI at an unconditional breakpoint at the label SPLIT_SCREEN.
3.Tab about halfway down your screen and press the SPLIT PF key defined in your ISPF profile (normally PF2).The
ISPF Primary Option Menu displays in the bottom half of your screen. A sample showing using a split-screen from an
Intercept panel follows:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000109 000108 000107 000106 000105 000078 000077 000076 000075 000074
 0

 U--->      109   1  0     SPLIT_SCREEN:

 616


InterTest™ and SymDump ® 11.0
                              GO TO OPTIONS;

                           /*------------------------------------------------*/
                           /* FROM THIS UNCONDITIONAL BREAKPOINT YOU CAN     */
                           /* PRESS THE PF KEY ASSIGNED TO THE SPLIT COMMAND */
                           /* WHICH TAKES YOU TO THE ISPF MAIN MENU.         */
                           /*------------------------------------------------*/
 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
 .
                                    CA
                            Islandia Data Center
                                                                        USER01
 OPTION ===>                                   CCCCCCCCCCCCCCCCCCCCCCCC CATSO
                                             CCCCCCCCCCCCCCCCCCCCCCCC
 06/05/02
                                            CCCC                        14:09
    C  CA Products                         CCCC                         XAD1
    D  SVC Dump Index                      CCCC                 AAAAAAA
    G  Color Graphics Terminal Products    CCCC               AAAAAAAAA
    P  Program Development Facility        CCCC             AAAA   AAAA

Update Your Source Code
If you had found an error in your program code, you can use ISPF to access and edit your source code before continuing
with your test session.
For example, in the basic demo, the application stopped execution of the program because it detected an S0C7 ABEND.
You were able to continue execution by dynamically changing the value of Tasknum to zero. This was a one-time patch.
To correct the problem, you need to update your source code so that Tasknum is properly initialized. You can do this from
any Intercept panel by splitting your screen to edit your source code.
Continue Execution
Follow these steps:


Continue Execution
Follow these steps:
1.Remove your ISPF split-screen using the command: =XYou return to a full-screen display of the unconditional
breakpoint shown in the previous panel.
2.Type GO and press Enter to continue execution.You return to the Demo Options Menu.
This concludes Option 3: Update Source Code. Select another option and go to the appropriate section, or exit the demo
using PF3.
Option 4 Interrupt a Looping Program
This option illustrates how to interrupt and verify that you have a looping program. It also illustrates the use of the skip
command.
NOTE
Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries and you
have the Demo Session Options Menu displayed on your screen.
This option requires you to interrupt the program by pressing the ATTENTION key or the PA1 key. Before proceeding,
locate each of these keys on your keyboard. If you need help, ask a technical support person before you begin.
 617


InterTest™ and SymDump ® 11.0
Follow these steps:
1.Select option 4 and press Enter.
CAMRPLI displays the screen that describes what occurs in this part of the demo session.
2.Press Enter.The application halts CAMRPLI at an unconditional breakpoint set at ORDER_CALC. A sample screen
showing CAMRPLI stopped at ORDER_CALC follows:
  CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000134 000133 000132 000131 000130 000079 000078 000077 000076 000075
 0

 U--->      134   1  0     ORDER_CALC:

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU HOW TO      */
                           /* INTERRUPT A LOOPING PROGRAM AND CHANGE THE     */
                           /* EXECUTION LOGIC WITHOUT RE-COMPILATION.        */
                           /*------------------------------------------------*/

                              LOOP_OUT                    = 0;

  --->      135   1  0        CALL TOTAL_ORDER ( );

  --->      136   1  0        GO TO OPTIONS;

  --->      137   1  0     DEMONSTRATE_HIST_COMMAND:

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU HOW TO      */
                           /* ISSUE THE HISTOGRAM COMMAND.                   */
                           /*------------------------------------------------*/

NOTE
If the Frequency Counter arrows and numbers are not displayed along the left side of your screen, turn the
frequency display on by entering the command: freq.


frequency display on by entering the command: freq.
3.Continue execution by typing GO and pressing Enter.CAMRPLI resumes execution. Notice the system light remains
on. There are additional breakpoints and screen panels in the demo program code, yet all you see is the system light.
This is symptomatic of a looping program. Halt the program to see what is going on.
4.Press the ATTN or PA1 key. Try the ATTN key first. If that does not work, your testing environment requires you to use
the PA1 key. Press RESET before pressing the PA1 key to unlock the terminal keyboard.The Attention Intercept panel
displays.
Continue with the instructions in Continuing from the Attention Routine.
NOTE
If you do not successfully stop execution with the ATTN or PA1 key before 20,000 executions of the demo
program loop, you reach a safety net conditional breakpoint. If you reach this breakpoint, instructions for
continuing follow.
Continue from the “Safety Net” Conditional Breakpoint
Follow this section only if you see the breakpoint in the following panel. If you do not, continue with the instructions in
the Continuing from the Attention Routine section that follows.
 618


InterTest™ and SymDump ® 11.0
A sample screen showing a Safety Net Conditional Breakpoint of a Demo Loop follows:
 CAMRPLI  ---------- CA InterTest Batch WHEN LOOPCOND BEFORE Intercept --------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000219 000218 000217 000216 000221 000220 000219 000218 000217 000216 0
       -------------------------------------------------------------------------
       227A93FA NP-S  000210    ITEM_TOTAL                   +0000969.00
       227A941A NP-S  000213 04 UNIT_PRICE                   +00080.75
                                   I  (+2)
       227A941E NP-S  000213 04 NO_OF_WIDGETS                +0000012.
                                   I  (+2)
       -------------------------------------------------------------------------
  020K      217   2  1          I                         = I + 1;
  020K      218   2  1          LOOP_OUT                  = LOOP_OUT + 1;
  020K      219   2  1          ITEM_TOTAL                = UNIT_PRICE ( I ) *
                                                       NO_OF_WIDGETS ( I );
       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
           STMT LEV NT
  020K      220   2  1          I                         = 1;
  020K      221   2  1          ORDER_SUB_TOTAL           = ORDER_SUB_TOTAL + IT
            222   2  1        END;

 U--->      223   2  0     TOTAL_ORDER_EX:

                              RETURN;


RETURN;

To continue with the looping program demo, you must press the ATTN or PA1 key before 20,000 executions of the loop
this time. To continue the program loop, use the following steps:
1.Type GO and press Enter to continue the loop execution.
2.Press the ATTN key or the RESET, then PA1 keys. Try the ATTN key first. If that does not work, your testing
environment requires you to use the PA1 key.
NOTE
Even if PA1 stopped the slow execution in option 1, you may need to press ATTN to stop a loop.
You should see the Attention Intercept panel.
To return to the Options Menu:
1.Enter the command: go options_menu
NOTE
This compiler is an optimizing compiler. Therefore, an abend is possible using the GO <label> command. If
this happens, you can return to the Options Menu by restarting the demo application.
2.Press Enter.
You return to the Options Menu. You can try the same option again, even if you did not complete it the first time, or
select another option from the menu.
Continue from the Attention Routine
The application now displays the Attention Intercept panel. A sample showing an Attention Intercept in procedure
TOTAL_ORDER follows:
 CAMRPLI  ---------- CA InterTest Batch ATTENTION Intercept -------------------
 COMMAND ===>                                                  SCROLL ===> CUR
 619


InterTest™ and SymDump ® 11.0
 TRACE=> 000221 000220 000219 000218 000217 000216 000221 000220 000219 000218 0
  013K      220   2  1          I                         = 1;
  013K      221   2  1          ORDER_SUB_TOTAL           = ORDER_SUB_TOTAL + IT
            222   2  1        END;

 U--->      223   2  0     TOTAL_ORDER_EX:

                              RETURN;

  --->      224   2  0     END TOTAL_ORDER;

  --->      225   1  0     PROPAGATE: PROC;

            226   2  0        DCL I                        FIXED BIN(15)   INIT(
            227   2  0        DCL TABLE_SUB                FIXED BIN(15)   INIT(
            228   2  0        DCL 1 TABLE_OF_SORTS,
                                    3 TABLE_ELEMENT (60)   CHAR(1);

  --->      229   2  0        DO I = 1 TO 17;
  --->      230   2  1          TABLE_SUB                 = INCREMENT ( TABLE_SU
  --->      231   2  1          TABLE_ELEMENT ( TABLE_SUB ) = '+';
  --->      232   2  1          TABLE_SUB                 = INCREMENT ( TABLE_SU

CAMRPLI keeps executing the TOTAL_ORDER procedure, as you can see from your Attention Intercept screen display.
The current statement is highlighted.


The current statement is highlighted.
Look at the frequency counters to the left of the program statements. They show repeated execution of the
TOTAL_ORDER statements, indicating a loop. To investigate the logic in TOTAL_ORDER, you can set a keep window for
I and then execute slowly using the SLOW command. This time you use the abbreviated form of the keep command: K.
Follow these steps:
1.Type the K I command to set the keep window and press Enter.
The application displays a keep window for the variable I. A sample screen showing the keep window to View I follows:
 CAMRPLI  ---------- CA InterTest Batch ATTENTION Intercept -------------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000221 000220 000219 000218 000217 000216 000221 000220 000219 000218 0
       -------------------------------------------------------------------------
       1F1A93F2 NB-S  000209    I                            +1.
       -------------------------------------------------------------------------
  013K      220   2  1          I                         = 1;
  013K      221   2  1          ORDER_SUB_TOTAL           = ORDER_SUB_TOTAL + IT
            222   2  1        END;

 U--->      223   2  0     TOTAL_ORDER_EX:

                              RETURN;

  --->      224   2  0     END TOTAL_ORDER;

  --->      225   1  0     PROPAGATE: PROC;

            226   2  0        DCL I                        FIXED BIN(15)   INIT(
            227   2  0        DCL TABLE_SUB                FIXED BIN(15)   INIT(
 620


InterTest™ and SymDump ® 11.0
            228   2  0        DCL 1 TABLE_OF_SORTS,
                                    3 TABLE_ELEMENT (60)   CHAR(1);

  --->      229   2  0        DO I = 1 TO 17;

2.To execute one CAMRPLI statement every two seconds, type the SLOW 2 command and press Enter.
CAMRPLI continues a slow execution. As the code executes, you can see the code looping, and you can see the
corresponding value of I in the keep window. The following sample screen of a SLOW 2 Execution shows a Loop and I
problem:
 CAMRPLI  ---------- CA InterTest Batch STEP BEFORE Intercept -----------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000220 000219 000218 000217 000216 000221 000220 000219 000218 000217 0
       -------------------------------------------------------------------------
       1F1A93F2 NB-S  000209    I                            +2.
       -------------------------------------------------------------------------

  013K      216   2  0        DO UNTIL (I = ORDER_ITEMS);
  013K      217   2  1          I                         = I + 1;
  013K      218   2  1          LOOP_OUT                  = LOOP_OUT + 1;
  013K      219   2  1          ITEM_TOTAL                = UNIT_PRICE ( I ) *
                                                       NO_OF_WIDGETS ( I );
       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
           STMT LEV NT


STMT LEV NT
  013K      220   2  1          I                         = 1;
  013K      221   2  1          ORDER_SUB_TOTAL           = ORDER_SUB_TOTAL + IT
            222   2  1        END;

 U--->      223   2  0     TOTAL_ORDER_EX:

                              RETURN;

  --->      224   2  0     END TOTAL_ORDER;

Notice that I changes from 1 to 2, but back to 1 again. I is being reset to 1, and causing the program to loop. The value
of I is causing the TOTAL_ORDER procedure to continue to be executed.
3.Stop the execution by pressing the ATTENTION or PA1 key. After the Attention Routine message is displayed, press
Enter.
The application brings you to another Attention Intercept panel. The current statement is highlighted.
4.To dynamically correct the loop-condition, you could use the SKIP command to bypass the offending statement. The s
line command is another form of the SKIP command.
5.Tab down to the statement: I = 1, and type S to the left of the line. The following sample screen shows using skip to
bypass the cause of the loop:
 CAMRPLI  ---------- CA InterTest Batch ATTENTION Intercept -------------------
 COMMAND ===>                                                  SCROLL ===> CSR
 TRACE=> 000219 000218 000217 000216 000221 000220 000219 000218 000217 000216 0
       -------------------------------------------------------------------------
       1F1A93F2 NB-S  000209    I                            +2.
       -------------------------------------------------------------------------


-------------------------------------------------------------------------

  013K      216   2  0        DO UNTIL (I = ORDER_ITEMS);
  013K      217   2  1          I                         = I + 1;
  013K      218   2  1          LOOP_OUT                  = LOOP_OUT + 1;
 621


InterTest™ and SymDump ® 11.0
  013K      219   2  1          ITEM_TOTAL                = UNIT_PRICE ( I ) *
                                                       NO_OF_WIDGETS ( I );
       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
           STMT LEV NT
 S013K      220   2  1          I                         = 1;
  013K      221   2  1          ORDER_SUB_TOTAL           = ORDER_SUB_TOTAL + IT
            222   2  1        END;

 U--->      223   2  0     TOTAL_ORDER_EX:

                              RETURN;

  --->      224   2  0     END TOTAL_ORDER;

The application skips the statement that sets I to 1, and executes the code as if the statement was removed.
6.Tab up to the second statement in the DO loop, I = I + 1, and type G to the left of the line, to continue execution from
that point
Your entry should match the following panel. The following sample screen shows a continuing execution from the add
statement:
 CAMRPLI  ---------- CA InterTest Batch NEXT BEFORE Intercept --- BREAKPOINT SET
 COMMAND ===>                                                  SCROLL ===> CSR
 TRACE=> 000219 000218 000217 000216 000221 000220 000219 000218 000217 000216 0
       -------------------------------------------------------------------------
       1F1A93F2 NB-S  000209    I                            +2.
       -------------------------------------------------------------------------

  013K      216   2  0        DO UNTIL (I = ORDER_ITEMS);


g013K      217   2  1          I                         = I + 1;
  013K      218   2  1          LOOP_OUT                  = LOOP_OUT + 1;
  013K      219   2  1          ITEM_TOTAL                = UNIT_PRICE ( I ) *
                                                       NO_OF_WIDGETS ( I );
       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
           STMT LEV NT
 S013K      220   2  1          I                         = 1;
  013K      221   2  1          ORDER_SUB_TOTAL           = ORDER_SUB_TOTAL + IT
            222   2  1        END;

 U--->      223   2  0     TOTAL_ORDER_EX:

                              RETURN;

  --->      224   2  0     END TOTAL_ORDER;

7.Press Enter.CAMRPLI resumes execution from the line where you entered the g, and continues execution until it
reaches the next unconditional breakpoint, as shown in the following panel.  The following sample screen shows an
unconditional breakpoint at TOTAL_ORDER_EX:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000223 000221 000219 000218 000217 000216 000221 000219 000218 000217 0
       -------------------------------------------------------------------------
       1F1A93F2 NB-S  000209    I                            +5.
 622


InterTest™ and SymDump ® 11.0
       -------------------------------------------------------------------------

  013K      216   2  0        DO UNTIL (I = ORDER_ITEMS);
  013K      217   2  1          I                         = I + 1;
  013K      218   2  1          LOOP_OUT                  = LOOP_OUT + 1;
  013K      219   2  1          ITEM_TOTAL                = UNIT_PRICE ( I ) *
                                                       NO_OF_WIDGETS ( I );
       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
           STMT LEV NT
 S013K      220   2  1          I                         = 1;
  013K      221   2  1          ORDER_SUB_TOTAL           = ORDER_SUB_TOTAL + IT
            222   2  1        END;

 U--->      223   2  0     TOTAL_ORDER_EX:

                              RETURN;

  --->      224   2  0     END TOTAL_ORDER;

CAMRPLI finally exited out of the DO loop and continued until it reached the unconditional breakpoint set at
TOTAL_ORDER_EX (one of the unconditional breakpoints included in the data set member PLIINCL).
You can see from the keep window that the value of I is 5. This is the proper value to permit the exit of the DO loop.
Thus, the use of the skip command allowed us to dynamically fix the program code that caused the loop, and continue
execution.
Remove the Keep Window and Skip Command
Before going back to the options menu, remove the keep window and skip command.


Before going back to the options menu, remove the keep window and skip command.
Follow these steps:
1.Type the REMOVE ALL command.
2.Tab down to the I = 1 statement and type over the S to the left of the statement with X and press Enter.
The keep window is removed, and the skip line command is removed.
3.Continue execution by  typing GO and pressing Enter.CAMRPLI resumes execution and displays the Demo Session
Options Menu.
This concludes Option 4: Interrupt a Program Loop. Select another option and go to the appropriate section, or exit the
demo using PF3.
Option 5 Trace Program Execution
This option illustrates the use of the PREVIOUS and ADVANCE commands to help you trace program execution.
NOTE
Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries and you
have the Demo Session Options Menu displayed on your screen.
Follow these steps:
1.Select option 5 and press Enter.
CAMRPLI displays the screen that describes what occurs in this part of the demo session.  The following sample
screen shows Option 5: Trace Program Execution:
      **********************************************************************
      *****                                                            *****
 623


InterTest™ and SymDump ® 11.0
      *****              CA InterTest Batch Demo Session               *****
      *****                  Tracing program execution                 *****
      *****                                                            *****
      **********************************************************************

        CA InterTest Batch gives you the ability to trace the execution of
        your program up to the point where a breakpoint occurs.
        Here is what will happen:

        1. CA InterTest Batch halts the DEMO program at an unconditional
           breakpoint.
        2. You use a combination of the Prev and Advance commands to
           scroll through the program statements in execution order.
        3. You issue the CS command to re-display the Current Statement
           to be executed.

           Press ENTER to continue or PF3 to return to the Options Menu.

2.Press Enter.The application halts CAMRPLI at an unconditional breakpoint that you included at the beginning of the
demo. The following sample screen shows CAMRPLI at an unconditional breakpoint:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000168 000118 000117 000116 000115 000114 000113 000112 000111 000110
 0

 U0001      168   1  0     PAY_CALC: PROC ( I );

            169   2  0        DCL I                        PIC '999';
            170   2  0        DCL J                        FIXED BIN(15);

  0001      171   2  0        DO J = 1 TO I BY 1;


0005      172   2  1           CALL POPULATE_GRAPH ( J );
  0005      173   2  1           END;

                           /* CHEQUE_LINE                 = ' ';             */
  0001      174   2  0        CHEQUE_AMOUNT               = TOTALGROSS;
  0001      175   2  0        RETURN;

  --->      176   2  0     END PAY_CALC;

  0005      177   1  0     POPULATE_GRAPH: PROC ( I );

            178   2  0        DCL   I                      FIXED BIN(15);
            179   2  0        DCL 1 MONTH_THING            STATIC,

Suppose you want to trace the execution path of the program prior to this point. You can have the application scroll back
and display a previously executed statement using the PREV command. The PREV  command lets you view previously
executed statements, but does not cause any statements to execute. After you scroll back using the PREV command, you
 624


InterTest™ and SymDump ® 11.0
can scroll forward and retrace execution using the ADVANCE command. You may specify a number from 1 to 999 with the
PREV and ADVANCE commands to scroll more than one statement at a time.
The PREV and ADVANCE commands do not change the statement where CAMRPLI resumes execution; the PREV and
ADVANCE only scroll the statements in the trace.
Follow these steps:
1.Type the PREV 9 command in the Command field and press Enter.
The application displays the ninth previous statement executed. The following screen shows the ninth previous
statement:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000168 000118 000117 000116 000115 000114 000113 000112 000111 000110
 0

  0001      110   1  0     DEMONSTRATE_PREV_COMMAND:

                              CALL ISPLINK ( DSPLY,
                                             COBDPN75 );

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU             */
                           /* THE BENEFITS OF USING THE PREV                 */
                           /* AND ADVANCE COMMANDS.                          */
                           /*------------------------------------------------*/

  0001      111   1  0        COBDPN71_LENGTHS            = 4;

  0001      112   1  0        CALL ISPLINK ( VCOPY,
                                             VCOPY_COBDPN71,
                                             VCOPY_COBDPN71_LENGTHS,
                                             VCOPY_COBDPN71_VALUES,
                                             VCOPY_MOVE );


VCOPY_COBDPN71_VALUES,
                                             VCOPY_MOVE );

  0001      113   1  0        IF VCOPY_COBDPN71_EIBAID    = 'PF03' THEN

Now you can retrace the execution of the nine statements using the ADVANCE command. The short form of the
ADVANCE command is A or AD. (You must enter the A on the command line.)
2.Type the A command and press Enter.
The application highlights the next statement executed.
3.Repeat the Advance step a few more times. The following screen shows advancing through the program trace:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000168 000118 000117 000116 000115 000114 000113 000112 000111 000110
 0

  0001      110   1  0     DEMONSTRATE_PREV_COMMAND:

                              CALL ISPLINK ( DSPLY,
                                             COBDPN75 );

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU             */
 625


InterTest™ and SymDump ® 11.0
                           /* THE BENEFITS OF USING THE PREV                 */
                           /* AND ADVANCE COMMANDS.                          */
                           /*------------------------------------------------*/

  0001      111   1  0        COBDPN71_LENGTHS            = 4;

  0001      112   1  0        CALL ISPLINK ( VCOPY,
                                             VCOPY_COBDPN71,
                                             VCOPY_COBDPN71_LENGTHS,
                                             VCOPY_COBDPN71_VALUES,
                                             VCOPY_MOVE );

  0001      113   1  0        IF VCOPY_COBDPN71_EIBAID    = 'PF03' THEN

You can follow the execution order of the program by following the highlighted lines as you advance through the
program trace. In effect, using PREV and ADVANCE gives you a simulated instant replay of program execution.
Option 5 Trace Program Execution
This option illustrates the use of the PREVIOUS and ADVANCE commands to help you trace program execution.
NOTE
Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries and you
have the Demo Session Options Menu displayed on your screen.
Follow these steps:
1.Select option 5 and press Enter.
CAMRPLI displays the screen that describes what occurs in this part of the demo session.
2.Press Enter.The application halts CAMRPLI at an unconditional breakpoint that you included at the beginning of the
demo. The following sample screen shows CAMRPLI at an unconditional breakpoint:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR


COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000168 000118 000117 000116 000115 000114 000113 000112 000111 000110
 0

 U0001      168   1  0     PAY_CALC: PROC ( I );

            169   2  0        DCL I                        PIC '999';
            170   2  0        DCL J                        FIXED BIN(15);

  0001      171   2  0        DO J = 1 TO I BY 1;
  0005      172   2  1           CALL POPULATE_GRAPH ( J );
  0005      173   2  1           END;

                           /* CHEQUE_LINE                 = ' ';             */
  0001      174   2  0        CHEQUE_AMOUNT               = TOTALGROSS;
  0001      175   2  0        RETURN;

  --->      176   2  0     END PAY_CALC;

  0005      177   1  0     POPULATE_GRAPH: PROC ( I );

 626


InterTest™ and SymDump ® 11.0
            178   2  0        DCL   I                      FIXED BIN(15);
            179   2  0        DCL 1 MONTH_THING            STATIC,

Suppose you want to trace the execution path of the program prior to this point. You can have the application scroll back
and display a previously executed statement using the PREV command. The PREV  command lets you view previously
executed statements, but does not cause any statements to execute. After you scroll back using the PREV command, you
can scroll forward and retrace execution using the ADVANCE command. You may specify a number from 1 to 999 with the
PREV and ADVANCE commands to scroll more than one statement at a time.
The PREV and ADVANCE commands do not change the statement where CAMRPLI resumes execution; the PREV and
ADVANCE only scroll the statements in the trace.
Follow these steps:
1.Type the PREV 9 command in the Command field and press Enter.
The application displays the ninth previous statement executed. The following screen shows the ninth previous
statement:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000168 000118 000117 000116 000115 000114 000113 000112 000111 000110
 0

  0001      110   1  0     DEMONSTRATE_PREV_COMMAND:

                              CALL ISPLINK ( DSPLY,
                                             COBDPN75 );

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU             */
                           /* THE BENEFITS OF USING THE PREV                 */


/* THE BENEFITS OF USING THE PREV                 */
                           /* AND ADVANCE COMMANDS.                          */
                           /*------------------------------------------------*/

  0001      111   1  0        COBDPN71_LENGTHS            = 4;

  0001      112   1  0        CALL ISPLINK ( VCOPY,
                                             VCOPY_COBDPN71,
                                             VCOPY_COBDPN71_LENGTHS,
                                             VCOPY_COBDPN71_VALUES,
                                             VCOPY_MOVE );

  0001      113   1  0        IF VCOPY_COBDPN71_EIBAID    = 'PF03' THEN

Now you can retrace the execution of the nine statements using the ADVANCE command. The short form of the
ADVANCE command is A or AD. (You must enter the A on the command line.)
2.Type the A command and press Enter.
The application highlights the next statement executed.
3.Repeat the Advance step a few more times.The following screen shows advancing through the program trace:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000168 000118 000117 000116 000115 000114 000113 000112 000111 000110
 0

 627


InterTest™ and SymDump ® 11.0
  0001      110   1  0     DEMONSTRATE_PREV_COMMAND:

                              CALL ISPLINK ( DSPLY,
                                             COBDPN75 );

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU             */
                           /* THE BENEFITS OF USING THE PREV                 */
                           /* AND ADVANCE COMMANDS.                          */
                           /*------------------------------------------------*/

  0001      111   1  0        COBDPN71_LENGTHS            = 4;

  0001      112   1  0        CALL ISPLINK ( VCOPY,
                                             VCOPY_COBDPN71,
                                             VCOPY_COBDPN71_LENGTHS,
                                             VCOPY_COBDPN71_VALUES,
                                             VCOPY_MOVE );

  0001      113   1  0        IF VCOPY_COBDPN71_EIBAID    = 'PF03' THEN

You can follow the execution order of the program by following the highlighted lines as you advance through the
program trace. In effect, using PREV and ADVANCE gives you a simulated instant replay of program execution.
Return to the Current Statement
Now you can return to the current statement, that is, the statement where execution was halted prior to the unconditional
breakpoint.
Follow these steps:
1.Type the CS command and press Enter.
The application displays the original Breakpoint Intercept panel shown in the beginning of this option.
2.Type the GO command and press Enter.
CAMRPLI resumes execution and displays the Advanced Options Demo screen. You can continue with any option or
exit.


exit.
This concludes Option 5: Trace Program Execution. Select another option and continue with the appropriate section, or
press PF3 to end the demo.
Option 6 Work with Indexed Table Items
This section of the demo session shows you a fast and easy way to inspect and modify the contents of indexed data
items. It also demonstrates how to use the STEP command to single-step execution.
NOTE
Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries and you
have the Demo Session Options Menu displayed on your screen.
Follow these steps:
1.Select Option 6 and press Enter.
CAMRPLI displays a screen that describes what occurs in this part of the demo session.
2.Press Enter.CAMRPLI resumes execution.
 628


InterTest™ and SymDump ® 11.0
The next screen you see is an Abend Intercept panel. The application has automatically halted CAMRPLI because it
detected a data exception in the highlighted statement.
The following screen shows CAMRPLI at an S0C7 Abend Intercept:
 CAMRPLI  ---------- CA InterTest Batch ABEND S0C7 Intercept ------------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000128 000127 000126 000125 000206 000205 000204 000203 000202 000201
 0

  0001      128   1  0        DISTRICT ( A1, B1, C1 )     =
                                 DISTRICT ( A1, B1, C1 ) + 1;
           -----------------------------------------------------------------
           |        THE FOLLOWING AUTOMATIC BREAKPOINT OCCURRED:           |
  --->     |   INTERCEPT IN PROGRAM CAMRPLI  AT #000128 REASON: ABEND S0C7 |
           |        PRESS ENTER TO REMOVE THIS MESSAGE.                    |
           -----------------------------------------------------------------
                           /* THIS SECTION OF THE DEMO SHOWS YOU HOW TO      */
                           /* INSPECT AND CHANGE THE VALUE OF SUBSCRIPTED    */
                           /* TABLE ITEMS.                                   */
                           /*------------------------------------------------*/

  0001      130   1  0     DEMONSTRATE_LOOP_DETECTION:

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU HOW TO      */
                           /* INTERRUPT A LOOPING PROGRAM AND CHANGE THE     */
                           /* EXECUTION LOGIC  _ WITHOUT RE_COMPILATION.     */
                           /*------------------------------------------------*/


/*------------------------------------------------*/

If you recall, this is the same type of error detected and corrected in the basic demo session. To continue execution, you
need to find the data item causing the S0C7 ABEND and dynamically modify it.
Looking at the highlighted breakpoint statement, you might suspect the variable is at fault; it probably was not initialized
correctly. The variable in this case is an indexed table entry.
Press Enter to remove the ABEND message box.The ABEND message box is removed.
Display an Indexed Table Entry
You can quickly inspect the value of the DISTRICT ( A1, B1, C1 ) field directly from this screen by typing K to the left of the
highlighted statement.
Tab to the highlighted statement and type K (for keep).
Press Enter.
The application displays the current value of DISTRICT. It also displays the value of each subscript item, because the k
line command requests a display of each item on that line.
The following panel displays a Keep Window for the Table Entry:
 CAMRPLI  ---------- CA InterTest Batch ABEND S0C7 Intercept ------------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000128 000127 000126 000125 000206 000205 000204 000203 000202 000201
 0

 -------------------------------------------------------------------------
 629


InterTest™ and SymDump ® 11.0
       1F1A8531 NP-S  000037 04 DISTRICT                     ?000.
                                   A1  (+1)
                                   B1  (+3)
                                   C1  (+5)

 -------------------------------------------------------------------------

  0001      128   1  0        DISTRICT ( A1, B1, C1 )     =
                                 DISTRICT ( A1, B1, C1 ) + 1;

                           /* TASK_STRUCTURE.TASK_TEXT    = ' ';             */
  --->      129   1  0        GO TO OPTIONS;

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU HOW TO      */
                           /* INSPECT AND CHANGE THE VALUE OF SUBSCRIPTED    */
                           /* TABLE ITEMS.                                   */
                           /*------------------------------------------------*/

  0001      130   1  0     DEMONSTRATE_LOOP_DETECTION:

The question mark that precedes the value of DISTRICT in the keep window tells us this field does not contain a valid
value. This is the error that triggered the automatic breakpoint.
The keep window also tells us which table entry is at fault. The values of each subscript item in this window indicate the
invalid data occurs at
element (1, 3, 5).
Dynamically Correct an Uninitialized Table Item
To dynamically correct this error you need to modify main storage so the field contains valid data. You can use the SET
command to set the value to zero. The application sets the variable using the proper format.
Type the following command: set district (a1,b1,c1) = zero
Press Enter.
The following panel corrects the uninitialized Table Item:


Press Enter.
The following panel corrects the uninitialized Table Item:
 CAMRPLI  ---------- CA InterTest Batch ABEND S0C7 Intercept ------------------
 COMMAND ===> set district (a1,b1,c1) = zero                   SCROLL ===> CUR
 TRACE=> 000128 000127 000126 000125 000206 000205 000204 000203 000202 000201
 0

 -------------------------------------------------------------------------
       1F1A8531 NP-S  000037 04 DISTRICT                     ?000.
                                   A1  (+1)
                                   B1  (+3)
                                   C1  (+5)

 -------------------------------------------------------------------------

  0001      128   1  0        DISTRICT ( A1, B1, C1 )     =
                                 DISTRICT ( A1, B1, C1 ) + 1;
 630


InterTest™ and SymDump ® 11.0

                           /* TASK_STRUCTURE.TASK_TEXT    = ' ';             */
  --->      129   1  0        GO TO OPTIONS;

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU HOW TO      */
                           /* INSPECT AND CHANGE THE VALUE OF SUBSCRIPTED    */
                           /* TABLE ITEMS.                                   */
                           /*------------------------------------------------*/

  0001      130   1  0     DEMONSTRATE_LOOP_DETECTION:

The application dynamically modifies the value in main storage for DISTRICT ( A1, B1, C1 ), and displays the new value in
the keep window. The message on the top right of the panel reads: SET COMPLETE.
Single-Step Execution
Use the step command to execute just one line of code. The step command lets you determine how many lines are
executed when you use the go command. For example, to execute 1 line at a time, or single-step, use the command: step
1.
Follow these steps:
1.Type the STEP 1 command and press Enter.
The application sets the step count to 1 and displays the following message: STEP COUNT SET. The following panel
shows setting the step count:
 CAMRPLI  ---------- CA InterTest Batch ABEND S0C7 Intercept ---- STEP COUNT SET
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000128 000127 000126 000125 000206 000205 000204 000203 000202 000201
 0

 -------------------------------------------------------------------------
       1F1A8531 NP-S  000037 04 DISTRICT                     +000.
                                   A1  (+1)
                                   B1  (+3)


A1  (+1)
                                   B1  (+3)
                                   C1  (+5)

 -------------------------------------------------------------------------

  0001      128   1  0        DISTRICT ( A1, B1, C1 )     =
                                 DISTRICT ( A1, B1, C1 ) + 1;

                           /* TASK_STRUCTURE.TASK_TEXT    = ' ';             */
  --->      129   1  0        GO TO OPTIONS;

                           /*------------------------------------------------*/
                           /* THIS SECTION OF THE DEMO SHOWS YOU HOW TO      */
                           /* INSPECT AND CHANGE THE VALUE OF SUBSCRIPTED    */
                           /* TABLE ITEMS.                                   */
                           /*------------------------------------------------*/

  0001      130   1  0     DEMONSTRATE_LOOP_DETECTION:

 631


InterTest™ and SymDump ® 11.0
2.Execute CAMRPLI by entering the command: GO and pressing Enter.The statement that increments the DISTRICT
table item is executed, and then the application halts execution and displays a Step Count Intercept panel. Statement
129 is now the current line, and is highlighted.
Remove the Step Count and Keep Window
When you want to end single-stepping, reset the step count to zero. This turns single stepping off. Remove the step count
and keep window before continuing execution.
Follow these steps:
1.Type the following command and press Enter: STEP 0; REMOVE ALL.
The application resets the step count and removes the keep window.
2.To display the current status of the step count, enter the step command without any count number. Type the STEP
command and press Enter.
The application displays the value of the step count in the top-right corner; in this case, the message is: NO STEP
COUNT SET.
3.Resume execution of CAMRPLI by entering GO.CAMRPLI resumes execution, and you return to the Options Menu.
This concludes Option 6: Work with Indexed Table Items. Select another option and continue with the appropriate section,
or press PF3 to end the demo.
Option 7 Histogram Report
This option illustrates how to create and view the histogram report of statement execution, which is useful in identifying
dead code.
NOTE
Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries and you
have the Demo Session Options Menu displayed on your screen.
Follow these steps:
1.Select option 7 and press Enter.
CAMRPLI displays the screen that describes what occurs in this part of the demo session.
2.Press Enter.The application halts CAMRPLI at an unconditional breakpoint set at the program exit. The following


screen shows the breakpoint intercept at label RETURN_TO_OPSYS:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000058 000142 000235 000234 000233 000239 000237 000232 000231 000239
 0

 U--->       58   1  0     RETURN_TO_OPSYS:

                              RELEASE ISPLINK;
  --->       59   1  0        CLOSE FILE ( REPORT );
  --->       60   1  0        RETCODE = DM_RC;
  --->       61   1  0        CALL PLIRETC ( RETCODE );
  --->       62   1  0        RETURN;

  0001       63   1  0     OPTIONS_MENU:

                           /*------------------------------------------------*/
                           /* INITIALIZE THE LENGTHS IN CASE OF RECURSION.   */
                           /*------------------------------------------------*/

 632


InterTest™ and SymDump ® 11.0
       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
           STMT LEV NT
                              CALL ISPLINK ( DSPLY,
                                             PLIDPN70 );

  0001       64   1  0        OPTION_I                    = 1;

Prior to exiting the program, you can request a histogram report using the HIST command.
3.Type the HIST command and press Enter.
The application returns the following message: 'HISTOGRAM SUCCESSFULLY WRITTEN'
View the Histogram Report
The report is written to the data set associated with the ddname INT1REPT that can be viewed by splitting the screen.
Follow these steps:
1.Tab a few lines down your screen and press the SPLIT PF key defined in your ISPF profile (normally PF2).The ISPF
Main Menu is displayed in the split-screen area.
2.Select the ISPF Browse Facility and request a display of the data set associated with the ddname INT1REPT. You
allocated this data set in Advanced Demo Preliminaries. The suggested data set name was: userid.INT1REPT
NOTE
In the following example, the report is viewed in SDSF.
The first page of the histogram report displays. A sample report is shown in the following panel. The following screen
shows Browsing the Histogram DD in SDSF:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
  COMMAND ===>                                                  SCROLL ===> CSR
  TRACE=> 000058 000142 000235 000234 000233 000239 000237 000232 000231 000239


U--->       58   1  0     RETURN_TO_OPSYS:
  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  SYSVIEW 11.5 CA11 ----------------- Output ----------------- 05/02/14
 18:01:17
  Command ====>                                                 Scroll *===>
 CSR
  -------------------------------------------------- Lvl 4 Row 1-35 Col
 1-80/115
  USER001  TSU   27743  DDname - INT1REPT  Stepname - CATSO     Procstep -
 CATSO

 ------------------------------------------------------------------------------

 ...+....10...+....20...+....30...+....40...+....50...+....60...+....70...+....
 CA InterTest/Batch       Execution Histogram For Program-ID: CAMRPLI
 Date:

 000001 0001 |*
 000042 0001 |*
 000043 0001 |*
 000044 0001 |*
 000045 0001 |*
 000046 0001 |*
 633


InterTest™ and SymDump ® 11.0
 000047 0001 |*
 000048 0001 |*
 000049 0001 |*
 000050 ---- |
 000051 ---- |

3.Page down to the end of the report using the maximum command with PF8
4.Type the M command and press PF8.
The last page of the histogram report displays, as shown in the following panel. The following screen shows the last
page of the histogram report:
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
  COMMAND ===>                                                  SCROLL ===> CSR
  TRACE=> 000058 000142 000235 000234 000233 000239 000237 000232 000231 000239

  U--->       58   1  0     RETURN_TO_OPSYS:
  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
  SYSVIEW 11.5 CA11 ----------------- Output ----------------- 05/02/14 18:06:44
  Command ====>                                                 Scroll *===>CSR
  GSVX006I End of data ---------------------- Lvl 4 Row 165-195/195 Col1-80/115
  RYARO02  TSU   27743  DDname - INT1REPT  Stepname - CATSO     Procstep -CATSO

 ------------------------------------------------------------------------------

 ...+....10...+....20...+....30...+....40...+....50...+....60...+....70...+....


000234 0017 |*
 000235 0001 |*
 000236 ---- |
 000237 0034 |*
 000239 0034 |*
 000240 ---- |
 000241 ---- |
 000242 ---- |
             ----+----|----+----|----+----|----+----|----+----|----+----|----+-
             *NOTE* ASTERISKS REPRESENT A SCALE OF 00000130 EXECUTION(S) PERAST
 CA InterTest/Batch       Execution Histogram For Program-ID: CAMRPLI     Date:
 Session Number: 54   For Userid RYARO02
 Number of executable statements: 174
 Number of statements executed during this test: 147
 Percentage of statements executed during this test: 84

In the previous panel, you can see that a number of lines were never executed. Check to see if these lines in the
program are dead code and should be removed.
NOTE
In our example, there is unexecuted code starting at line 240. Note the corresponding line number in your
program that is unexecuted.
5.Remove your split-screen using the command: XYou return to a full-screen display of the Program Exit Intercept
shown in the beginning of this option.
6.Use the Find Statement (FS) command to display the code that was never executed. Type the following command and
press Enter: FS 240
The application displays the requested line of code.
The following screen displays the unexecuted code:
 634


InterTest™ and SymDump ® 11.0
 CAMRPLI  ---------- CA InterTest Batch UNCOND BEFORE Intercept ---------------
 COMMAND ===>                                                  SCROLL ===> CUR
 TRACE=> 000058 000142 000235 000234 000233 000239 000237 000232 000231 000239 0
                                 RETURN ( I + 1 );
  --->      240   2  0        ELSE
                                 RETURN ( I );

  --->      241   2  0     END INCREMENT;

  --->      242   1  0  END CAMRPLI;

       5688-235 IBM PL/I for MVS & VM          CAMRPLI: PROC OPTIONS (MAIN);
                                                              ATTRIBUTE AND CROS
       DCL NO.    IDENTIFIER                      ATTRIBUTES AND REFERENCES

       3          ASA_CNTL                        /* IN LINE_OUT */ AUTOMATIC UN
       5          A1                              AUTOMATIC ALIGNED BINARY FIXED
                                                  125,128,128
       18         BALANCE_LINE                    /* IN BALANCE_OUT */ AUTOMATIC
       18         BALANCE_OUT                     AUTOMATIC /* STRUCTURE */
       17         BALANCE_REPORT                  AUTOMATIC /* STRUCTURE */
       188        BILL_CALC                       ENTRY RETURNS(DECIMAL /* SINGL
                                                  102
       101        BILL_YTD                        /* IN BILLING_VALUES */ AUTOMA

By reviewing the code, you can determine whether or not it is required. In this case, it is required for the program and
should be retained.
If unexecuted code needs to be removed from your own programs, you can split the screen again and make the code
changes, or wait until you complete the review of the histogram report.


changes, or wait until you complete the review of the histogram report.
Now return to the current statement in the CAMRPLI program.
Follow these steps:
1.Type the CS command and press Enter.
The application displays the Program Exit Intercept panel.
2.To continue the advanced demo, enter the command go options and press Enter. To end the demo, enter the GO
command.
If you are continuing the demo, CAMRPLI program execution continues with the display of the Advanced Options
Menu. Choose another option from the menu.
If you are exiting the demo, CAMRPLI resumes execution at the normal program exit, and terminates. You return to
the Execution Control panel of the Foreground Option. Your previous entries are displayed, allowing you to begin
testing again, or exit. Use PF3 to exit.
Quick References
This section contains the quick reference for InterTest for CICS and InterTest Batch.
Click the file to view it, or use the right-click menu to save or to print the file.
InterTest Batch Quick Reference
InterTest for CICS Quick Reference for Assembler, COBOL, and PL/I Users
 635


InterTest™ and SymDump ® 11.0
InterTest for CICS Quick Reference for All Users
 636


InterTest™ and SymDump ® 11.0
Using
Use InterTest and SymDump for debugging capabilities and fault management
InterTest
Use the InterTest debugging capabilities to quickly and easily identify and correct errors in:
•Batch and IBM ® CICS ® COBOL
•Assembler and PL/I programs
•IBM IMS/DC applications
•IBM DB2 stored procedures
SymDump
Use the SymDump fault management tool for IBM z/OS systems to provide critical, comprehensive ABnormal ENDing
(ABEND) information for test and production environments.
Using Batch Tools
Use the InterTest Batch tool for comprehensive, interactive testing and debugging.
InterTest Batch is a comprehensive interactive tool for testing and debugging batch, DB2 stored procedures, and IMS/
DC applications through a TSO/ISPF or Roscoe  Interactive Environment ( Roscoe ) interface. Instead of using dumps
and reports, programmers use interactive, online facilities with the actual source listing for debugging to resolve multiple
errors in a single test session. The application intercepts all application abend conditions, and identifies the source code
statement that caused each error. Interactive debugging functions include the ability to:
•Set breakpoints
•Trace program execution
•Place data items in a keep window on the source listing screen
•Examine and modify the values of data items
•Find a data string in working storage
A user-friendly, menu-driven allocation and JCL conversion facility simplifies the task of allocating program files for
foreground execution, or preparing JCL for batch execution.
SymDump  Batch provides abend diagnostic information for batch abends in test and production environments. Its
formatted reports make it easy for programmers to resolve abends without having to decipher system dumps. SymDump
Batch supports all languages, with special symbolic support for COBOL, PL/I, and Assembler. Batch also includes detailed


database information for abending IMS, DB2, and IDMS/DB  applications. SymDump  Batch is automatically available to
every user once installed.
Command Syntax
The following notation conventions are used throughout the documentation to illustrate application commands:
•Uppercase letters and special characters are displayed as usual.
•Lowercase italic letters indicate the generic description of the value of a variable parameter.
•Brackets (< >) enclose optional values.
•Vertical bars (|) separate alternatives.
•Ellipses (...) specify that a parameter can be repeated.
•Default values are underlined.
 637


InterTest™ and SymDump ® 11.0
Batch Debugging
This section describes how to use InterTest Batch to test a program using application batch commands and panels.
The application is supported with HELP panels and an online tutorial which describe the application options and
commands. You can use this product to test the following programs:
•Assembler programs that are assembled with Assembler F, Assembler H, or the High Level Assembler
•COBOL programs that are compiled with any COBOL compiler that is supported by IBM
•PL/I programs that are compiled with any PL/I compiler that is supported by IBM
The application gives programmers complete access to the program as it is executing. You can stop the program and the
Intercept panel that is displayed at user-specified intercept points. From the Intercept panel, you can browse the program
listing in full-screen mode, using program function keys (PFKs) to scroll backward or forward through the program. You
can examine and repair problem areas without ending the test session, or issue commands to set new intercept points
and resume testing. Each application panel is supported with a HELP panel. An online tutorial describes the product
system.
During a test session, you can perform the following actions:
•Stop the test at any executable statement in the program.
•View the program listing while the test session is stopped.
•Trace the program execution and browse the trace table entries.
•Display and alter data-item values.
•Step through the program in increments of any number of statements.
•Identify the number of times each statement in the program is executed.
•Step through the program execution in reverse order.
•Access the other options such as Core.
The application runs under IBM ISPF and Roscoe  Interactive Environment ( Roscoe ) under ETSO. Programmers familiar
with these environments need little or no training to use this product.


with these environments need little or no training to use this product.
During a test session using the ISPF dialog manager, programmers can use the following features to test efficiently:
•Split the screen to access other ISPF options, such as EDIT.
•Print to the ISPF listing data set.
•Enter ISPF or TSO commands from any panel.
During a test session using Roscoe , programmers can perform the following features:
•Split the screen to perform other InterTest Batch or Roscoe  functions.
•Suspend the application session to perform other Roscoe  functions.
•Print to an application data set, which can be allocated to the AWS or any MVS data set.
•Use the Roscoe  print facility.
Debug Optimized Applications
You can use InterTest Batch to debug programs that were optimized by the COBOL compiler OPTIMIZE option or by
Optimizer/II  or Optimizer/II . However, debugging these programs can result in unexpected behavior.
During optimization, a compiler often relocates individual instructions, statements, or even entire paragraphs. If
instructions are moved to another statement, or if statements in a paragraph are moved to another paragraph, the
resulting object program and listing might not accurately represent:
•The relationship between the source statements and their generated object code
•Or the relationship between a paragraph label and the statements contained within the paragraph.
 638


InterTest™ and SymDump ® 11.0
As a result, the breakpoint intercept might not occur, or the wrong sequence of statements appears to be executed while
single-stepping. Also, the debugger might appear to highlight the wrong statement at a breakpoint intercept.
These unexpected displays do not indicate that a program is being executed incorrectly. These displays indicate that the
debugger cannot accurately identify exactly which object code corresponds to which source statement, or which statement
is contained within which paragraph.
The application uses the information in the compiler-generated procedure map or offset report to establish the program
offset for each statement and label in the program. During execution, the debugger recognizes the start of the new
statement or label by matching the program offset of the currently executing instruction with the PROTSYM information
obtained from the compiler listing. Inaccuracies can include the following instances:
•Incorrect execution when using the SKIP, GO stmt# or CS stmt# commands
•Failure to stop at a breakpoint at a paragraph label or statement
•Unexpected or out of sequence highlighting of statements when single-stepping
Application abends can result from the use of the SKIP, GO stmt#, or CS stmt# commands because the optimized object
code might have register requirements that do not support changes to the flow of control. Avoid these commands when
debugging an optimized program.
For the best debugging results, avoid using optimization in your testing environment when possible.
NOTE
For more information about debugging optimized COBOL and the OPTIMIZE option, see COBOL OPTIMIZE
Compiler Option .
COBOL Statement Numbers
Some commands require a statement number in the command syntax. For COBOL programs, these statement numbers
are generated by the COBOL compiler. The compiler-generated statement numbers are the ones farthest to the left in the
compilation listings and in application displays. Use these numbers in all commands that require a statement number.
Assembler Offsets


Assembler Offsets
Use the statement number in an Assembler program to set breakpoints, as in COBOL programs, or by using the offset.
When using an offset, you must prefix the offset with the + sign.
For example, enter AT +78 in the Command area of the Intercept panel to set a breakpoint at offset 78. You can also enter
S in the Option field and +78 in the Statement field on the Breakpoint panel.
Panels and Functions
This article describes how panels are displayed, the available options, and product documentation syntax.
Panel Display Formats
The application uses full screen displays to prompt you for option selection and data entry, and to display source data,
listings, and other information.
The first two lines are the header lines; they have a common format for all displays.
Line one of the application panel contains the panel title and short message area. The title line identifies the reason for
the panel being displayed, and, where appropriate, data set information. The short message area displays the following
information:
 639


InterTest™ and SymDump ® 11.0
•Current line number (in BROWSE)
•Notice of successful completion of a processing function
•Notice of an error condition (accompanied by an audible alarm, if one is installed on the terminal)
•A frequency count in response to an Info line command
Line two, the prompt or input area, is used to enter an option, selection, or command.
The remainder of the screen contains a list of options, input fields and prompts, or scrollable data. You can scroll in
any application panel containing a SCROLL field in line two. The application recognizes PAGE (P), HALF (H), MAX
(M), or four numeric digits. The default is PAGE. Enter a numeric value in the SCROLL field to control the number
of lines scrolled when you press the SCROLL key.
A scroll field value of cursor (CSR) is supported under InterTest Batch ISPF and Roscoe .
The application does not display ISPF long messages.
Program Access Keys
For ISPF users, the application uses the PF keys as set from the ISPF option. For Roscoe  users, the application uses the
PF keys as set from the InterTest Batch Primary Option Menu.
Program Access Keys
The program access keys are defined as follows:
ATTENTION (PA1)
Interrupts the program that is currently executing and displays the ATTENTION INTERCEPT panel at the next
executable statement in a monitored program. If the program is in a loop, you might need to press RESET before
pressing PA1.
NOTE
The ATTENTION key can be either the PA1 key or the ATTN key, depending on the terminal type and
how it is attached to the system.
RESHOW (PA2)
Redisplays the contents of the screen. Use this key if, for example, the CLEAR key was pressed accidentally.
Primary Option Menu


Primary Option Menu
The following list shows the features available from the Primary Option Menu. Availability of individual options depends on
whether you are using ISPF or Roscoe .
Option 1
Foreground
Use this option to set up and control a test execution of a program.
Option 2
Core
Use this option to display virtual memory in hexadecimal and character format. Use SCROLL keys and
commands to locate and find data in virtual storage.
Option 3
Allocation
ISPF users can select this option to allocate ddnames and allow conversion of JCL into a CLIST or ALIB.
Option 4
Map
This option provides several address space-related displays that are most often used to debug complex system-
related problems.
 640


InterTest™ and SymDump ® 11.0
Option 5
Batch
Use this option to set up and test a program to be executed in Batch.
Option K
Keys
Use this option to set up and control a test execution of a program.
Option K
Keys
Roscoe  users can set their PF keys for InterTest Batch. Type over the default assignments on the PF Key
Definition panel and press Enter to change the PF keys. The default key assignments are as follows:
PF1
Help
PF2
Split
PF3
End
PF4
Return
PF5
Find
PF6
Go
PF7
Up
PF8
Down
PF9
Swap
PF10
Left
PF11
Right
PF12
Print
Valid PF key commands are HELP, SPLIT, END, RETURN, FIND, GO, UP, DOWN, SWAP, LEFT, RIGHT, and
PRINT.
Option U
Utilities
Use this option to display and update the contents of your PROTSYM file. You can also define which programs to
exclude from auto-monitoring.
Option X
Exit
Use this option to terminate the application. The ISPF End key (typically PF3) or Roscoe  End Key (typically PF4)
also terminate the application from the Main Menu.
 641


InterTest™ and SymDump ® 11.0
ISPF-HelpHelp
Display the Tutorial Table of Contents from the Primary Option Menu. The tutorial summarizes the features and
commands. You can page through the tutorial or select a subject from the Tutorial Table of Contents.
The Primary Option Menu for Roscoe  users is displayed when you select the InterTest Batch Option on the Roscoe  menu,
or when you enter the following commands, where xxx is the prefix of the library where the application is installed. Omit
this prefix if the application is installed in a common execution library.
 [xxx.]IBALLOC
 [xxx.]IBRUN

Debugging Panels
Foreground, Option 1 on the Primary Option Menu, includes the following panels:
•Panels to identify the programs to be tested, and their associated symbolic files
•A panel to view the program listing and control the test execution
•Panels to display and alter program storage
•Panels to display trace, file, and other related information
In addition, novice users can gain online experience with the application by performing the basic demonstration sessions
contained in the sections.
Overview of Test Panels
The testing process begins by selecting Option 1, Foreground, on the main menu. The first two panels are called the
Execution Control panel and the Monitor Control panel. Once you enter data on the Execution Control and Monitor Control
panels, execution of the test program begins.
The following list describes a list of test-related panels:
Breakpoint Control
That panel allows you to set breakpoints (places where the application should interrupt) by statement number or
paragraph name.
Breakpoint Display
This panel lists the breakpoints set by statement numbers or paragraph names.
When Control
This panel allows you to set breakpoints based on variable contents or when a variable changes.
When Condition Display


When Condition Display
This panel displays the when conditions set by the line mode COND command, or by the When Control panel.
Equate
This panel allows data items to be equated to symbolic names. You can then refer to the variable using the data
item or the symbolic name.
Equate Display
This panel displays the equate set by the line mode EQUATE command or by the Equate panel
Data Display
This panel shows a formatted display of program data.
Linkage Display
This panel shows a formatted display of the LINKAGE SECTION in COBOL format. This display is only available
for COBOL programs.
 642


InterTest™ and SymDump ® 11.0
Records Display
This panel shows a formatted display of the records that are defined under the FILE SECTION in COBOL format.
This display is only available for COBOL programs.
File Status Panel
This panel shows the allocation for each FILE DESCRIPTION by ddname and dsname, and the DCB information
whether the file is open or closed. If the file is open, it indicates for INPUT, OUTPUT or INOUT. This display is only
available for COBOL programs.
Program Trace Display
This panel displays program statements in the order of their execution.
Debug Session Display
This panel displays a list of saved debug sessions that are stored in the INT1CLIB file. These sessions can be
displayed, maintained, and loaded into an active debugging session. Use the MLOG command to launch this
screen.
To access the other options during the test session, use the split-screen feature and select another option from the
Primary Option Menu.
Execution Control Panel
Use the Execution Control panel to specify the main program, execution parameters, and allocations required to run the
application.
Allocations Fields
Use the ALIB Dsname and Member fields to specify which existing ALIB member to use to perform the necessary
allocations, specify the parameters to be passed to the main program, or to identify the main program.
If the ALIB contains multiple job steps, indicate which job step to use in the EXEC Job Step and Proc Step fields.
Specifying an ALIB is not required.
Execution Overrides
Use the Execution Overrides fields to override any fields that were obtained through the ALIB, if any were specified. The
fields are as follows:
PGM
Indicates and overrides the main program to execute in this debug session.
PARM
Specifies and overrides the execution parameter to pass to the main program.
NOTE


PARM
Specifies and overrides the execution parameter to pass to the main program.
NOTE
PARM is mutually exclusive with the Number of Linkage Parameters field.
Number of Linkage Parameters
Specifies the number of linkage parameters expected by the main program when there is more than one. (For
a COBOL program, this number is equivalent to the number of Linkage Section data items defined on the
PROCEDURE DIVISION USING statement.) You can initialize and update the parameter values using the SET
and LINKAGE commands. It also allows you to debug a subprogram as a main program.
Task Libraries
Specifies and overrides the STEPLIB (or JOBLIB if one was specified in the ALIB) required to execute the
application. Type the fully qualified data set name in quotes or indicate an allocated ddname in parentheses.
 643


InterTest™ and SymDump ® 11.0
NOTE
For customers with multiple Endevor  C1DEFLTS:
If you want to use the dynamic symbolic support feature and you have chosen to run the debugging session as
if you have a single C1DEFLTS (for example, if you have not defined your Endevor  site IDs in IN25SITE table),
define the fully qualified data set name that contains the C1DEFLTS with your site ID in the Task Libraries fields.
Initial Commands
Specifies a member in your INT1CLIB DD that includes commands to execute at the initial intercept.
Monitor Control Panel
Use the Monitor Control panel to specify which programs the application monitors during a debugging session.
You can define up to 30 programs, but the use of wildcards allows you to define an unlimited number of programs. The
data that you enter on this panel remains from session to session until you delete or change the information.
Monitored Programs
Use the Monitored Programs section to define the programs that you want to debug. The program name must match the
name of the PROTSYM member that contains the symbolic information for the program being debugged. You can define
the complete name of up to 30 programs. You can specify more than 30 programs using when you use wildcards in the
program name.
If you entered a Y in the Monitor PL/I field on the Monitor Control panel, the PL/I Protsym/Load Module Map panel
appears when you press Enter. Specify the name of the load module in which these programs reside in the Modname field
to the right of the entry.
Symbolic Files
Use the symbolic (PROTSYM) files section to define the files that contain the symbolic information for the programs
that you want to debug. A PROTSYM entry must exist for each program that you want to debug. Specify at least one


PROTSYM file in this section.
Dynamic Symbolic Support
Dynamic symbolic support dynamically retrieves the compiler or assembler listing of the monitored program from a listing
data set managed by Endevor  and loads the listing into the designated PROTSYM file. For this feature to work, the load
module library where the load module is loaded and the listing data set containing the module listing must be under
Endevor  control.  The load library is specified under Task Libraries on the Execution Control panel.
The dynamic symbolic support feature always loads the correct symbolic information whenever a matching symbolic
version is not found. To activate the dynamic symbolic support feature, enter Y to the right of the PROTSYM file,
underneath the heading Endevor Auto Populate to designate the PROTSYM file as the file to receive the listing. To
deactivate the feature, change the  Y to N.
Symbolic files associated with programs that do not contain a time stamp in the executable, such as non-LE-enabled
Assembler programs, are reloaded every time that they are monitored. If you want to suppress this behavior, specify N in
the Always Auto-Populate Non-LE-Enabled Assembler field.
NOTE
The dynamic symbolic support feature cannot differentiate between multiple listing outputs created by a
single Endevor  processor for the same element. Dynamic symbolic support using listing outputs from multiple
compiles or assemblies from a single Endevor  GENERATE or MOVE action for the same element can produce
unpredictable results.
 644


InterTest™ and SymDump ® 11.0
Dynamic Symbolic Support Return Codes
Dynamic symbolic support provides an integrated service using API calls that deploy various proven components
including The following:
•Endevor
•PROTSYM post processors
•z/OS dynamic allocation
•CSVQUERY
•Binder services
The following table provides a list of possible return codes (RC) and reason codes (RSC) the API and various components
can return.
NOTE
Other numeric return codes and reason codes are also returned by Endevor  and z/OS binder services API
(IEWBIND).
Function RC RSC Meaning
API 0 0 Operations completed
successfully.
API 2 0 GETMAIN failed.
API 8 0 Endevor  server not activated.
API 12 0 Invalid or missing parameter in
NDVRCOMM.
API 16 0 Bad return code from Endevor .
See Endevor  documentation.
API 20 0 Data set open failed.
API 28 0 Allocation error. See IBAPILOG
file.
API 32 0 IN25DALC load failed.
API 36 0 ENA$NDVR load failed.
API 40 0 Endevor  footprint not found for
requested element.
API 44 0 Requested CSECT not found.
API 30 0 IN25CDRV load failed.
BINDER 44 0 Requested CSECT not found by
binder.
CSVQ 48 0 CSECT from IDRU does not
match CSECT in NDVR_NAM2.
Endevor 12 0 Incorrect C1DEFLTS used.
Endevor 32 15 Endevor  encountered critical
error and cannot continue.


Endevor 32 15 Endevor  encountered critical
error and cannot continue.
NDSB 4 0 Compressed footprint in IDRU
invalid.
NIDR 2 0 GETMAIN failed.
NIDR 32 0 IN25NDSB load failed.
NSRV 8 NSRV Listing server ABORTed or
failed.
 645


InterTest™ and SymDump ® 11.0
0000 12 0000 Incorrect C1DEFLTS used.
Intercept Panel
The Intercept panel is the point where execution of the test program is controlled.
The Intercept panel has the following attributes:
•The monitor name of the program that is intercepted is displayed in the upper left corner of the panel.
•The reason the program has been intercepted is displayed in the title line of the panel (*INITIAL* INTERCEPT).
•The trace line shows the last 10 statement numbers executed.
•The program listing that is displayed is scrolled to the current statement and that statement is highlighted.
NOTE
Each time a test begins, the application displays an Initial Intercept panel that stops before the first monitored
executable statement is executed. At this point, use breakpoints and control commands before the program is
executed.
You can specify the number of times each statement has been executed as shown in the following panel. This function is
called the frequency counter . For more information about the frequency counts, see Control Commands.
Invoke all other test panels from the Intercept panel. You must return to the Intercept panel before accessing another test
panel. For example, to format a data item, enter the DIsplay command in the Command field. To return to the Intercept
panel, press the END key. To resume execution, enter GO in the Command field, use the G line command, or press the
appropriate PF key. The test continues until the next intercept condition is encountered, an ABEND occurs, or the test
comes to the normal end of job.
Types of Intercepts
The type of intercept that is displayed is shown at the top center of the panel on the title line. The following list describes
the possible intercepts.
*INITIAL* INTERCEPT
This intercept is displayed upon entry into the first program that you have asked to monitor. To have the


This intercept is displayed upon entry into the first program that you have asked to monitor. To have the
application stop upon entry to all programs, enter AT ALL ENTRY on the command line at this intercept.
UNCOND BEFORE and UNCOND AFTER INTERCEPT
This intercept is displayed when the program reaches an executable statement where the application was
instructed by the programmer to stop execution.
ABEND INTERCEPT
This intercept is displayed when a monitored program ABENDs or an unhandled condition has been raised
under LE/370. The ABEND code is shown in the title line. Use application commands to resolve ABENDs. For
example, if invalid data is in a data item, use the set command to change the value. Continue the test using the
GO command.
ATTENTION INTERCEPT
This intercept is displayed when a potential breakpoint is reached after the ATTENTION or PA1 key is pressed.
For more information on use of the ATTENTION or PA1 key, see the Stopping a Looping Program in Testing
Procedures. Enter the GO command in the Command field or press the appropriate PF key.
STEP BEFORE
and STEP AFTER INTERCEPT
This intercept is displayed when the count parameter in the STEP command is matched. Enter the STEP
command in the Command field of the Intercept panel. For more information about this command format, see
STEP Control Command in Debugging Commands.
 646


InterTest™ and SymDump ® 11.0
The STEP command specifies the number of statements to be executed each time the GO command is issued.
The STEP COUNT Intercept panel is displayed after each execution.
NEXT BEFORE
and NEXT AFTER INTERCEPT
This intercept is displayed when the next count (set by the NEXT command) is exceeded. Enter the NEXT
command in the Command field of the Intercept panel. For more information about this command format, see
the NEXT Control Command in Debugging Commands. The NEXT command causes the execution of the next
n statements in the program. The NEXT command operand specifies the number of statements to be executed
before the Next Count Intercept panel is displayed again.
WHEN
when-name BEFORE ; WHEN when-name  AFTER INTERCEPT
This intercept is displayed at a conditional breakpoint. A conditional breakpoint is detected when the conditional
statement that is specified in the COND command is true. Enter the COND command in the Command field of
the Intercept panel to set conditional breakpoints or to access the When panel. For more information about the
command formats, see Control Commands. Set conditional breakpoints with the line commands C, W, and V.
LABEL INTERCEPT
This intercept is displayed with executing a label when the AT ALL LABEL or AT LABEL breakpoint are set.
DBCALL INTERCEPT
This intercept is displayed when a call is made to a database (Such as DB2 or IMS) when the AT ALL DBCALL or
AT DBCALL breakpoint are set.
PGM ENTRY INTERCEPT
This intercept is displayed upon entry to a program that you are monitoring when the AT ALL ENTRY or AT
ENTRY breakpoint are set.
PGM EXIT INTERCEPT
This intercept is displayed before exiting a COBOL program that is being monitored when the AT ALL EXIT or AT
EXIT breakpoint are set.
Breakpoint Panels
This article describes the breakpoint panels that are accessed from Option 1 on the main menu.


This article describes the breakpoint panels that are accessed from Option 1 on the main menu.
When you use a conditional or unconditional breakpoint command, but do not specify operands, the application displays a
series of panels to collect the information that is required to define the breakpoint.
NOTE
You can also set breakpoints by entering a single-character line command on the line where you want the
breakpoint. You can set an unlimited number of breakpoints.
Breakpoint Panel
Use the Breakpoint panel to set, reset (delete), or list unconditional breakpoints. Access the Breakpoint panel by entering
the command UNCOND (or AT) or OFF, without operands, in the Command field of the Intercept panel.
Use the OPTION field to enter S (set), R (reset), or L (list):
S
You must enter the statement number. The program stops whenever the statement number is encountered,
unless you enter a count in the COUNT field.
You can use the COUNT field to specify the number of times a statement is executed before the program is
stopped. The program stops at the designated statement before the final increment of the COUNT field. The
commands that you specified to be executed at breakpoint are executed when the COUNT limit is satisfied.
 647


InterTest™ and SymDump ® 11.0
Use the AFTER field to indicate whether to stop the execution before this statement is executed (N), or after the
statement is executed (Y).
R
Deletes a breakpoint. You must enter the statement number. To delete a breakpoint for another program, enter the
program name.
L
Displays the Breakpoint Status panel. This panel lists all unconditional breakpoints that are currently set in the
program.
You can specify application commands to execute at a breakpoint by entering the commands (separated by semicolons)
in the COMMANDS TO BE EXECUTED AT BREAKPOINT field. The commands execute until the program resumes
through the GO command, or until there is a request for a panel through a command such as DI or AT. The remaining
commands are ignored. The list of commands can be up to 73 characters long and should be entered as shown in the
following example:
 COMMANDS TO BE EXECUTED AT BREAKPOINT:
 ===>SET BINARY-1 = 01;LDI BINARY-1;NEXT 5

In this example, the following commands are executed when the breakpoint occurs:
•The value of data item BINARY-1 is set to 1.
•Data item BINARY-1 is displayed on the Intercept panel in a keep window .
•Five statements are executed.
Breakpoint Status Panel
The Breakpoint Status panel lists breakpoints that are set in the Breakpoint panel, and by the UNCOND or AT commands
for the current program.
The panel displays the following information:
PROGRAM
The monitored program name.
STMT#
The statement number of the breakpoint.
COUNT
The number of times a breakpoint is executed before the program stops and the command in the COMMANDS
TO BE EXECUTED field is executed
EXEC
Shows the number of times the breakpoint has been executed.
B/A/T


EXEC
Shows the number of times the breakpoint has been executed.
B/A/T
Indicates whether execution stops before the statement (B), after the statement (A), or at a temporary breakpoint
(T).
Note:  If there is a temporary breakpoint, the execution stops before the statement.
COMMANDS TO BE EXECUTED
Application commands that are specified in the Breakpoint panel or by the AT command.
SOURCE LINE
Shows the source line where the breakpoint was set.
NOTE
Use an O or X line command to remove these breakpoints from this screen.
 648


InterTest™ and SymDump ® 11.0
You can use all SCROLL keys and SCROLL variables in this display.
When (or COND) Panel
Use the When panel to set, reset (delete), or list conditional breakpoints. Access this panel by entering either COND (or
WHEN) or OFFWN, without operands, in the Command field of the Intercept panel.
You give each When condition a when-name that is up to eight characters long. If the when-name specified is a statement
number in the program, the when condition is checked only before executing this statement. This line-specific when
condition is known as a local conditional and requires less computing overhead since the condition is not tested before
every statement.
A When-condition breakpoint is defined by one of two conditions:
•If only the when-name and the data-area-1 operands are specified, a W when-name Intercept panel is displayed each
time the value of the specified data item in data-area-1 changes. This type of conditional breakpoint is called a variable
change breakpoint.
•If the operands when-name, data-area-1, operator, and data-area-2 are specified, the data item that is specified in
data-area-1 is compared to the data item that is specified in data-area-2 based on the operator. When the condition is
true, a W when-name Intercept panel is displayed. (Data-area-2 can be a data item, a constant, LOW-VALUES, HIGH-
VALUES, SPACES, or ZEROES.)
Use the OPTION field to enter S (set), R (reset), or L (list):
S
The when-name and data-area-1 operands are required; the operator and data-area-2 operands are optional.
R
Only the when-name operand is required.
L
Displays the When Conditions Display panel. This panel lists all conditional breakpoints in the program.


L
Displays the When Conditions Display panel. This panel lists all conditional breakpoints in the program.
Field Descriptions
WHEN NAME
A 1-8 character name that is assigned to the test or program statement number.
DATA-AREA-1
The data-name to be tested.
OPERATOR
Condition which DATA-AREA-1 and DATA-AREA-2 must meet for the breakpoint to occur. Valid values are:
•GT or > Greater Than
•LT or < Less Than
•EQ or = Equal
•NE or ? = Not Equal
•GE or >= Greater Than or Equal
•LE or <= Less Than or Equal
NOTE
=> and =< are not permitted.
DATA-AREA-2
(Optional) Data-name or content which is compared with Data-AREA-1.
BEFORE/AFTER
Field to indicate whether to stop before or after the statement when the condition is recognized.
 649


InterTest™ and SymDump ® 11.0
Execute commands at a conditional breakpoint by entering the commands (separated by semicolons) in the COMMANDS
TO BE EXECUTED AT WHEN CONDITION field. At the breakpoint, commands execute sequentially until the program
resumes execution through the GO command, or until there is a request for a panel through a command such as the DI or
UNCOND command. The remaining commands are ignored. The list of commands can be up to 73 characters long and
should be entered as shown in the following example:
 COMMANDS TO BE EXECUTED AT WHEN CONDITION:
 ===>SET BINARY-1 = 01;LDI BINARY-1;NEXT 5

When Conditions Display Panel
The When Conditions Display panel lists conditional breakpoints set in the When panel, by the V, C and W line
commands, and by the COND (or WHEN) command for the current program with operands in the Command field of an
Intercept panel.
A sample When Conditions Display panel follows:
 ------------------- CA InterTest Batch BREAKPOINTS PANEL ----------------------
 COMMAND ===>                                                  SCROLL ===> CUR

      *************************** Top of Data *********************************
      CONDITIONAL BREAKPOINTS FOLLOW:
      PROGRAM   WHN NAME  DATA NAME 1                     OP    DATA NAME 2
      --------  --------  ------------------------------  ----  ---------------
 .    CAMRCOBB  LOOPCOND  LOOP-OUT                        GT    +5000.
      ..SUBCOMMANDS FOR ABOVE WHEN ==> SET LOOP-OUT=0

     ************************** Bottom of Data *******************************

NOTE
Use an O or X line command to remove the breakpoint from this screen.
You can use all SCROLL keys and SCROLL variables in this display.
Equate Panel


You can use all SCROLL keys and SCROLL variables in this display.
Equate Panel
Use the Equate panel to set, drop (delete), or list equated variable names. You can equate a data item with a symbolic
name and then refer to by either the symbolic name or the data name. An unlimited number of equates can be set. To
access the Equate panel, enter the command EQU or DROP, without operands, in the Command field of the Intercept
panel.
Use the OPTION field to enter S (set), D (drop), or L (list):
S
You must enter an equate name and the data-name-1 fields. Only enter the data-name-2 and data-name-3 fields
when equating qualified data-items. Data-name-1 can be a subscripted or indexed data item.
D
Drops an equate. You must enter the equate name.
L
Displays the Equate Display panel. This panel lists all equates that were set using the EQUATE command
NOTE
For more information on the use and function of this command, see the EQUATE Control Command in
Debugging Commands.
 650


InterTest™ and SymDump ® 11.0
Equate Display Panel
The Equate Display panel lists the equate name and actual name for all equates currently set.
You can use all SCROLL keys and SCROLL variables in this display.
Data Display Panels
You view or alter data values in a monitored program using data display panels. Enter one of the following commands in
the Command field of the Intercept panel to access each type of display.
DISPLAY
Display a data item defined to the monitored program or the WORKING STORAGE SECTION of a COBOL
program.
LINKAGE
Display the LINKAGE SECTION of a COBOL program. This command is not valid for assembler or PL/I.
RECORDS
Display the FILE SECTION file descriptions of a COBOL program. This command is not valid for assembler or PL/
I.
NOTE
When the DATAMON command is in effect and the trace navigation commands (PREV, ADV, POINT) have been
used since the last breakpoint, this panel does not allow altering of data values.  In addition, the data values that
are displayed correspond to the data values before the current trace entry was executed.
Display Panel
The Display panel shows the following information:
ADDRESS
This column shows the starting virtual storage address for the data item. Use this address to address the data in
Core, Option 2 on the PRIMARY OPTION MENU.
TYPE
This is defined as follows:
 651