Previous Topic: Debugging CommandsNext Topic: Control Commands


Line Commands

Line commands let you type a command in the far left field of a line. You may type multiple commands on different lines before pressing Enter, which causes them to be processed. Scrolling or any other command that causes the display to change also causes the specified line commands to be processed.

The following table is an overview of the Line commands, the corresponding Control Commands, and their function. The following pages provide a more complete description of each command.

Note that some commands have synonyms, such as A and U, which are fully interchangeable. Use whichever one you find easiest to remember.

Line
Commands

Control
Commands

Description

A

U

AT

UNCOND

An unconditional breakpoint is set at the specified line. A U remains in the first column to show where breakpoints are set.

For assembler, if an A is placed next to a line in the keep window, the access register for that item is displayed.

C

W

COND

WHEN

A conditional breakpoint is set at the specified line. Issuing this command causes the application to display the When screen, where the condition may be specified.

The application automatically completes the line number portion of the When screen based on your breakpoint line.

D

DISPLAY

The DISPLAY panel is shown for all of the data items on the line where the D command is specified.

For assembler, the operands for the current instruction in register notation are shown in the DISPLAY panel.

Cursor-sensitive DISPLAY - If D is entered and the cursor is placed on a COBOL or PL/I data item in that line, pressing Enter displays the DISPLAY panel for only that item and data items to the right of the item on the same line.

G

GO

The program begins executing (Go to) the line where the G is typed.

H

KEEPX

LDIX

LDX

The data items on the line where the H is placed are listed at the top of the Intercept panel in a keep window and shown in Hex format.

For assembler, the operands for the current instruction in register notation are added to the keep window.

Cursor-sensitive KEEPX - if H is entered and the cursor is placed on a COBOL or PL/I data item in that line, pressing Enter lists in the keep window only that data item and data items to the right of that item on the same line.

For assembler programs, if an H is placed on a line within the keep window, the high half of the 64bit register is displayed.

I

INFO

In instances where a frequency count exceeds 9999, Info displays the actual count at the top right of the screen.

For assembler programs, if an I is placed on a line within the keep window, the access register is displayed.

K

KEEP

LDI

The data items on the line where the K or L is placed are listed in a keep window on the top of the Intercept panel.

For assembler, the operands for the current instruction in register notation are added to the keep window.

Cursor-sensitive KEEP - If you enter K and the cursor is placed on a COBOL or PL/I data item in that line, pressing Enter lists in the keep window only that data item and data items to the right of that item on the same line.

O , blank,

X

OFF

OFFU

The breakpoint currently set on the line is reset (turned off).

P

PRINT

The DISPLAY for all the COBOL or PL/I data items on the line are written to the session log for later printing.

For assembler, the operands for the current instruction in register notation are written to the session log for later printing.

R

REMOVE

LDI

An RDI, reset data item, is done for each of the data items on the line to remove entries in the keep window. You may also use it next to individual keep window entries.

S

SKIP

Skip this statement. The S remains in the first column to show you which statements are skipped.

V

COND

WHEN

A variable change breakpoint is set at the specified line. The breakpoint is triggered before the line is executed when the application determines that the value of a variable in the line changes.

Cursor-sensitive variable change breakpoint - If you enter V and the cursor is placed on a COBOL or PL/I data item, pressing Enter designates that item as the variable change item.

X

OFF

RDI

Remove breakpoint or remove data item from keep window.

+ nnn

Increment a subscript by nnn on a displayed data item.

- nnn

 

Decrement a subscript by nnn on a displayed data item.

<[nnnn]

 

Used on a keep window entry scrolls the data left nnnn bytes.

>[nnnn]

 

Used on a keep window entry scrolls the data right nnnn bytes.

A or U Command (Set Unconditional Breakpoints)

The A or U line command performs the same function as the AT or UNCOND command. An unconditional breakpoint is set on the line where the A or U is typed. The program stops at the statement prior to executing it. A U displays on the line to show you where breakpoints have been set. The U or A line command is only valid on executable lines of the program listing. Executable lines contain a frequency counter number or arrow. There is no limit other than the size of the screen. If you press Enter or the scroll keys, it sets the breakpoints.

You can type other commands over the U. Reset breakpoints using the OFF, O, X, or blank line commands.

The following panel shows breakpoints being set on lines 13100, 13400, and 13736 of the program:

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE= 012400 012300 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- ---> 012400 DEMO-BEGIN. ---> 012500 GO TO DEMO-INIT. ---> 012600 DEMO-INIT. ---> 012700 OPEN OUTPUT OUTPUT01. ---> 012800 MOVE HD1 TO LINE-OUT. ---> 012900 PERFORM WRITE-LINE. u---> 013100 FORCING-THE-ABEND. ---> 013200 MOVE MASK1 TO BIN1. ---> 013300 MOVE ZERO TO MASK1. u---> 013400 MOVE MASK1 TO BIN1 013410 BIN2 013500 BIN3 013600 BIN4. ---> 013700 TABLE-MOVE. u---> 013736 MOVE TABLE-FILL TO WA-TABLE-1. ---> 013737 NUM-EDITED-TEST. ---> 013738 MOVE IN-FUNC TO OUT-FUNC. ---> 013739 MOVE IN-FUNC TO OUT-FUNC2.

Press Enter to set the breakpoints.

The listing appears as shown in the following panel. The lines that have breakpoints set display a U in the first column to show you where the breakpoints are.

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 012400 012300 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- ---> 012400 DEMO-BEGIN. ---> 012500 GO TO DEMO-INIT. ---> 012600 DEMO-INIT. ---> 012700 OPEN OUTPUT OUTPUT01. ---> 012800 MOVE HD1 TO LINE-OUT. ---> 012900 PERFORM WRITE-LINE. U---> 013100 FORCING-THE-ABEND. ---> 013200 MOVE MASK1 TO BIN1. ---> 013300 MOVE ZERO TO MASK1. U---> 013400 MOVE MASK1 TO BIN1 013410 BIN2 013500 BIN3 013600 BIN4. ---> 013700 TABLE-MOVE. U---> 013736 MOVE TABLE-FILL TO WA-TABLE-1. ---> 013737 NUM-EDITED-TEST. ---> 013738 MOVE IN-FUNC TO OUT-FUNC. ---> 013739 MOVE IN-FUNC TO OUT-FUNC2.

You may also use the LISTAT command to show the Breakpoints panel as follows:

-------------------- CA InterTest™ Batch BREAKPOINTS PANEL --------------------- COMMAND ===> SCROLL ===> CUR *************************** Top of Data ********************************* UNCONDITIONAL BREAKPOINTS FOLLOW: PROGRAM STMT# COUNT EXEC B/A COMMANDS TO BE EXECUTED -------- ------ ----- ---- --- ------------------------------------- . CAMRCOBB 000589 0000 0000 B SOURCE LINE: SPLIT-SCREEN. . CAMRCOBB 000541 0000 0000 B SOURCE LINE: PAY-CALC. . CAMRCOBB 000659 0000 0000 B SOURCE LINE: ORDER-CALC. ************************************* BOTTOM OF DATA *************************

C or W Command (Set Conditional Breakpoint)

A conditional breakpoint is set only for the specified line. Issuing this command and pressing Enter causes the program to display the When screen, where the condition may be specified. The condition is only checked before executing that statement. The application automatically completes the line number portion of the When screen based on your breakpoint line.

The C or W line command is only valid on executable lines in the program listing. Executable lines contain a frequency counter number or arrow.

For further explanation of the When panel, see the chapter "Debugging Panels."

In the following example, you have entered the C command at line 1149:

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ------------------ Command ===> Scroll===> CUR TRACE=> 001151 001150 001149 001148 001162 001155 001154 001153 001151 001150 0 U0001 001141 ORDER-CALC. 0001 001142 MOVE CUSTOMER-VALUES TO CUSTOMER-ORDER. 0001 001143 MOVE ZEROES TO ORDER-SUB-TOTAL, SUB-6, LOOP-O 0001 001144 PERFORM TOTAL-ORDER THRU TOTAL-ORDER-EX 001145 UNTIL SUB-6 EQUAL 5. U---> 001146 ORDER-CALC-EX. ---> 001147 GO TO OPTIONS. 0101 001148 TOTAL-ORDER. c0101 001149 ADD 1 TO SUB-6. 0101 001150 ADD 1 TO LOOP-OUT. 0100 001151 MULTIPLY UNIT-PRICE(SUB-6) BY NO-OF-WIDGETS(S 001152 GIVING ITEM-TOTAL. 0100 001153 ADD ITEM-TOTAL TO ORDER-SUB-TOTAL. 0100 001154 MOVE 1 TO SUB-6. PP 5668-958 IBM VS COBOL II Release 3.2 09/05/90 INT2DEMO LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+- 0100 001155 TOTAL-ORDER-EX. 001156 *------------------------------------------------* 001157 * The code above will loop. The loop can be * 001158 * interrupted by pressing an attention key.. .. * 001159 * The frequency counter should provide a clue *

In the following example the application has displayed the When panel with the line number information completed:

-------------------- CA InterTest™ Batch WHEN PANEL --------------------------- OPTION ===>                                                                                                                                                       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    ===> 001149                                                        DATA-AREA-1  ===>                                                             OPERATOR     ===>           (EQ, NE, LT, GT, LE, GE, =, <>, <, >, <=, >=)      DATA-AREA-2  ===>                                                              AFTER        ===> N         (Y/N)                                                                                                                          COMMANDS TO BE EXECUTED AT WHEN CONDITION:                                      ===>                              

D Command (Display Working Storage)

For COBOL and PL/I programs the D line command causes the Display panel to be shown for all the data items on the line where the command is typed. For assembler programs, the D line command displays the operands for the current instruction in register notation. The D line command is valid on any line in the program listing.

You may type multiple D line commands on different lines, but to display the Display panel from each line in succession, press the END (PF3 or PF15) key. If D is specified on four lines, the Display panel appears for the data items on the first line. When END is pressed, the Display panel appears for the data items on the second line. This continues until the last D command is processed. Then the Intercept panel is displayed.

Cursor-sensitive Display: If you enter D and the cursor is placed on a COBOL and PL/I data item in the line, pressing Enter displays the Display panel for only that item and data items to the right of the item on the same line.

For more information on the Display Panel, see Data Display Panels in the chapter "Debugging Panels."

G Command (Go from Line)

The G line command causes the program to begin executing from the line on which you typed the G. Specify only one G line command at any time. If you type, execution begins from the highest line number. For example, if you type G on line 12900 and on line 13100, execution resumes at line 13100.

If you type G on line 13100 of the listing, as shown in the following panel, the program begins executing on line 13100 instead of normally beginning on line 12800. Lines 12800 and 12900 are not executed.

I NT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 012800 012700 012600 012400 012300 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. ---> 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. U---> 012800 MOVE HD1 TO LINE-OUT. ---> 012900 PERFORM WRITE-LINE. g---> 013100 FORCING-THE-ABEND. ---> 013200 MOVE MASK1 TO BIN1. ---> 013300 MOVE ZERO TO MASK1. U---> 013400 MOVE MASK1 TO BIN1 013410 BIN2 013500 BIN3 013600 BIN4. ---> 013700 TABLE-MOVE. U---> 013736 MOVE TABLE-FILL TO WA-TABLE-1. ---> 013737 NUM-EDITED-TEST.

H Command (Display Hex Data)

For COBOL or PL/I programs, the H line command causes a data item to be displayed in hexadecimal format for any data items contained on the line where you type the H. See the LDX command in the Control Commands section that follows for further explanation of the display. For assembler programs, the H line command displays the operands for the current instruction in register notation. For assembler programs, there is no functional difference between the H line command and the K line command. The number of H's that you specify is limited only by the number of data items displayed, because of the screen size.

Cursor-sensitive hex display: If you enter H and the cursor is placed on a COBOL or PL/I data item in that line, pressing Enter displays in hexadecimal format only that data item and data items to the right of that item on the same line.

You may reset the hex displays using the RDI command or the R line command.

Note: You cannot modify the zones and numerics portion of the data display. You also cannot modify group items.

In the following panel, the program has stopped executing because of an S0C7 abend as shown at the top of the Intercept panel. You have typed an H on line 13200 where the ABEND occurred to view the data items from that line. If you press Enter, it causes the line command to process.

INT2DEMO ---------- CA InterTest™ Batch ABEND S0C7 Intercept ------------------ COMMAND ===> SCROLL===> PAGE TRACE=> 013200 013100 020100 020000 012900 012800 012700 012600 012500 012400 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. h0001 013200 MOVE MASK1 TO BIN1. ---> 013300 MOVE ZERO TO MASK1. U---> 013400 MOVE MASK1 TO BIN1 013410 BIN2 013500 BIN3 013600 BIN4. ---> 013700 TABLE-MOVE. U---> 013736 MOVE TABLE-FILL TO WA-TABLE-1. ---> 013737 NUM-EDITED-TEST.

The following panel shows the hex data displays for the data items, MASK1 and BIN1, on line 13200. From the displayed data items, you should be able to determine the cause of the ABEND. A character field, MASK1, filled with blanks (X'40') is being moved to a numeric binary field. You could then use the SET command to change MASK1 to an acceptable numeric value.

INT2DEMO ---------- CA InterTest™ Batch ABEND S0C7 Intercept ------------------ COMMAND ===> SCROLL===> PAGE TRACE=> 013200 013100 020100 020000 012900 012800 012700 012600 012500 012400 ------------------------------------------------------------------------ 00243DA0 AN 004000 03 MASK1 DATA OCCUPIES 0002 BYTES OF STORAGE ZONES 44 NUMERICS 00 00243DB2 NB-S 004600 03 BIN1 +00000000. DATA OCCUPIES 0004 BYTES OF STORAGE ZONES 0000 NUMERICS 0000 ------------------------------------------------------------------------ 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. 0001 013200 MOVE MASK1 TO BIN1. ---> 013300 MOVE ZERO TO MASK1. U---> 013400 MOVE MASK1 TO BIN1

For assembler programs, if you use the H line command within the keep window, the high half of the 64bit register is displayed in a short message at the top of the screen. The following panel shows the short message displayed when the H command is used in the keep window:

MEMTEST ---------- CA InterTest™ Batch *INITIAL* Inte- High Half = 00000001 COMMAND ===> SCROLL ===> CSR TRACE=> 000060 000059 000058 000056 000055 000050 000049 000048 000047 000046 0 ------------------------------------------------------------------------- 00000000 HX 000000 02 R1 000000000000000000 ------------------------------------------------------------------------- 0001 000096 900F 1000 00000 59 STM R0,R15,0(R1) ---> 00009A EB0F 1040 0026 00040 60 STMH R0,R15,64(R1) ---> 0000A0 9B0F 1080 00080 61 STAM R0,R15,128(R1)

I Command (Display Full Frequency Count Information)

In instances where a frequency count for a line exceeds 9999, the I line command displays the actual count at the top right of the screen. After typing I to the left of the line, press Enter to display the frequency count.

The following panel shows the actual frequency count for a line number that has exceeded 9999 executions:

COB2DEMR ---------- CA InterTest™ Batch WHEN LOOPCOND BEFORE Inte Executed 10000 Command ===> Scroll===> CUR TRACE=> 001151 001150 001149 001148 001162 001155 001154 001153 001151 001150 0 U0001 001141 ORDER-CALC. 0001 001142 MOVE CUSTOMER-VALUES TO CUSTOMER-ORDER. 0001 001143 MOVE ZEROES TO ORDER-SUB-TOTAL, SUB-6, LOOP-O 0001 001144 PERFORM TOTAL-ORDER THRU TOTAL-ORDER-EX 001145 UNTIL SUB-6 EQUAL 5. U---> 001146 ORDER-CALC-EX. ---> 001147 GO TO OPTIONS. 0101 001148 TOTAL-ORDER. I010K 001149 ADD 1 TO SUB-6. 0101 001150 ADD 1 TO LOOP-OUT. 0100 001151 MULTIPLY UNIT-PRICE(SUB-6) BY NO-OF-WIDGETS(S 001152 GIVING ITEM-TOTAL. 0100 001153 ADD ITEM-TOTAL TO ORDER-SUB-TOTAL. 0100 001154 MOVE 1 TO SUB-6. PP 5668-958 IBM VS COBOL II Release 3.2 09/05/90 COB2DEMR

For assembler, if you use the I line command within the keep window the access register of the item is displayed in a short message at the top of the screen. The following panel shows the short message displayed when you use the A command in the keep window.

TESTAR ---------- CA InterTest™ Batch ABEND S0C7 Int- ALET ===> 00010004 COMMAND ===> SCROLL ===> CSR TRACE=> 000060 000059 000058 000056 000055 000050 000049 000048 000047 000046 0 ------------------------------------------------------------------------- 00000000 HX 000000 02 R1 000000000000000000. ------------------------------------------------------------------------- 0001 000096 900F 1000 00000 59 STM R0,R15,0(R1) ---> 00009A EB0F 1040 0026 00040 60 STMH R0,R15,64(R1) ---> 0000A0 9B0F 1080 00080 61 STAM R0,R15,128(R1)

L or K Command (Display Data Item in a Keep Window)

For COBOL or PL/I programs, the L line command causes a data item to be displayed on the Intercept panel for any data items contained on the line where the L is typed. For assembler programs, the L line command displays the operands for the current instruction in register notation. This is commonly known as a keep window. For more information on LDI commands, see the LDI (or KEEP) command in the Control Commands section that follows. The number of L's you can specify is limited only by the number of data items displayed because of the screen size.

Cursor-sensitive keep: If you enter L or K and the cursor is placed on a COBOL or PL/I data item in that line, pressing Enter lists in the keep window only that data item and data items to the right of that item on the same line.

The LDI (or keep window) displays may be reset using the remove all command or the R line command.

Note: Elementary items are modifiable from within the keep window.

In the following panel the program has stopped at a breakpoint. To display all the data items in the MOVE statement, you must type a K on each of the lines on which the statement occurs. In this case, you must type K on lines 13400, 13410, 13500, and 13600. Pressing Enter causes the command to process.

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 013400 013300 013200 013100 020100 020000 012900 012800 012700 012600 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. 0001 013200 MOVE MASK1 TO BIN1. 0001 013300 MOVE ZERO TO MASK1. k---> 013400 MOVE MASK1 TO BIN1 k 013410 BIN2 k 013500 BIN3 k 013600 BIN4. ---> 013700 TABLE-MOVE. U---> 013736 MOVE TABLE-FILL TO WA-TABLE-1. ---> 013737 NUM-EDITED-TEST.

The following panel shows the keep window displays for data items MASK1, BIN1, BIN2, BIN3, and BIN4:

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 013400 013300 013200 013100 020100 020000 012900 012800 012700 012600 ------------------------------------------------------------------------ 00204DA0 AN 004000 03 MASK1 00 00204DB2 NB-S 004600 03 BIN1 +00000001. 00204DB6 NB-S 004700 03 BIN2 +00000016. 00204DBA NB-S 004800 03 BIN3 +00000032. 00204DBE NB-S 004900 03 BIN4 +00000077. ------------------------------------------------------------------------ 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. 0001 013200 MOVE MASK1 TO BIN1. 0001 013300 MOVE ZERO TO MASK1. U---> 013400 MOVE MASK1 TO BIN1 013410 BIN2

O or X Command (Turn Off Breakpoints)

The O or X line command removes a breakpoint that is set for the line on which it is typed. A blank in the first field on a line also resets the breakpoint. The O line command should only be used on lines that contain a U or S in the first column (where a breakpoint is set). An O on any other line has no effect. The number of O commands that may be processed is limited only by the display screen size.

C, W, and V line commands are not displayed and therefore cannot be removed with an O or X.

Note: X is a synonym of the R line command when it is used in the keep window. When it is used on a source line, X is a synonym of the O line command.

In the following panel, you have entered an O line command on lines 13400 and 13736 by typing over the U's in the first column:

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 013400 013300 013200 013100 020100 020000 012900 012800 012700 012600 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. 0001 013200 MOVE MASK1 TO BIN1. 0001 013300 MOVE ZERO TO MASK1. o---> 013400 MOVE MASK1 TO BIN1 013410 BIN2 013500 BIN3 013600 BIN4. ---> 013700 TABLE-MOVE. o---> 013736 MOVE TABLE-FILL TO WA-TABLE-1. ---> 013737 NUM-EDITED-TEST.

After you press Enter, the U's are no longer on the lines. This indicates that the breakpoints have been reset as shown in the following panel:

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 013400 013300 013200 013100 020100 020000 012900 012800 012700 012600 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. 0001 013200 MOVE MASK1 TO BIN1. 0001 013300 MOVE ZERO TO MASK1. ---> 013400 MOVE MASK1 TO BIN1 013410 BIN2 013500 BIN3 013600 BIN4. ---> 013700 TABLE-MOVE. ---> 013736 MOVE TABLE-FILL TO WA-TABLE-1. ---> 013737 NUM-EDITED-TEST.

You can confirm that you reset the breakpoints by using the LISTAT command to produce the Breakpoint Status panel.

P Command (Print Display)

For COBOL or PL/I programs, the P line command writes the display in the session log for all the data items on the line where you typed the command. For assembler programs, the P line command prints the operands for the current instruction in register notation. The data is written as it would be displayed using the D line command. For a description of the Display Panel, see Data Display Panels in the chapter "Debugging Panels."

You can type the P line command on any line in the program listing. You can enter multiple P commands on different lines.

For further description and a sample of the session log, see Session Log Facility (Review Debugging Session) at the end of this chapter.

R Command (Reset Data Item Display)

The R line command resets a data item display from an LDI command, an L line command, an LDX command, or an H line command. Place the R line command on a line on the program listing to reset all the data items on that line for which List Data Item displays are present, or place it directly on a listed data item display to reset that display.

Note: X is a synonym of the R line command when it is used in the keep window. When it is used on a source line, X is a synonym of the O line command.

In the following panel, an LDI has been done for MASK1 and BIN1, and an LDX has been done for BIN2. By placing an R on the data item display for BIN1 and line 13410 containing BIN2, these data items are reset after you press Enter.

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 013400 013300 013200 013100 020100 020000 012900 012800 012700 012600 ------------------------------------------------------------------------ 00204DA0 AN 004000 03 MASK1 00 r 00204DB2 NB-S 004600 03 BIN1 +00000001. 00204DB6 NB-S 004700 03 BIN2 +00000016. DATA OCCUPIES 0004 BYTES OF STORAGE ZONES 0001 NUMERICS 0000 ------------------------------------------------------------------------ 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. 0001 013200 MOVE MASK1 TO BIN1. 0001 013300 MOVE ZERO TO MASK1. ---> 013400 MOVE MASK1 TO BIN1 r 013410 BIN2

The following panel shows the results of the R line commands. The BIN1 and BIN2 displays have been reset, leaving only the display for MASK1:

INT2DEMO ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- COMMAND ===> SCROLL===> PAGE TRACE=> 013400 013300 013200 013100 020100 020000 012900 012800 012700 012600 ------------------------------------------------------------------------ 00204DA0 AN 004000 03 MASK1 00 ------------------------------------------------------------------------ 7 INT2DEMO 15.49.31 JUN 30,1990 0001 012300 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 012400 DEMO-BEGIN. 0001 012500 GO TO DEMO-INIT. 0001 012600 DEMO-INIT. 0001 012700 OPEN OUTPUT OUTPUT01. 0001 012800 MOVE HD1 TO LINE-OUT. 0001 012900 PERFORM WRITE-LINE. U0001 013100 FORCING-THE-ABEND. 0001 013200 MOVE MASK1 TO BIN1. 0001 013300 MOVE ZERO TO MASK1. ---> 013400 MOVE MASK1 TO BIN1 013410 BIN2 013500 BIN3 013600 BIN4. ---> 013700 TABLE-MOVE. ---> 013736 MOVE TABLE-FILL TO WA-TABLE-1.

S Command (Skip this Statement)

The S (Skip) line command when placed directly next to a statement causes the statement to be skipped when the program is executing. The S remains on the line to show you which statements are not executed. Skip is considered an unconditional breakpoint.

You may type other commands over the S. To cancel a Skip line command use a blank, X, or O line command. If you use OFF ALL to remove all breakpoints, all skip conditions are also removed.

Important! When a program has been optimized, or when the statement being skipped is any of the following, the S (Skip) line command may have undesired results:

For more details, see the SKIP Command (Skip a Statement) in the chapter “Debugging Commands”.

The following panel shows a skip breakpoint being set at statement 21010. The S causes the call to the program A1 to be skipped as the program is executed:

INT2DEMO ---------- CA InterTest™ Batch *INITIAL* Intercept ------------------- COMMAND ===> SCROLL===> HALF TRACE=> 020400 8 17.28.55 MAR 10,1990 *--> 020400 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- *--> 020500 DEMO-BEGIN. *--> 020600 GO TO DEMO-INIT. *--> 020700 DEMO-INIT. *--> 020800 OPEN OUTPUT OUTPUT01. *--> 020900 MOVE HD1 TO LINE-OUT. *--> 021000 PERFORM WRITE-LINE. S*--> 021010 CALL 'A1'. *--> 021020 CALL 'A2'. U*--> 021200 FORCING-THE-ABEND. *--> 021300 MOVE MASK1 TO BIN1. *--> 021310 DISPLAY MASK1 BIN1 BIN2 BIN3 BIN4. *--> 021400 MOVE ZERO TO MASK1. *--> 021500 MOVE MASK1 TO BIN1 021600 BIN2 021700 BIN3 021800 BIN4. *--> 021900 IF BIN1 = BIN2 022000 NEXT SENTENCE.

The following panel shows what the program looks like after you have used the GO command to resume program execution. The program is intercepted by the breakpoint on line 21200. Note that there is no frequency counter on statement 21010. This statement was not executed.

INT2DEMO ---------- CA InterTest™ Batch UNCOND BEFORE Intercept --------------- COMMAND ===> SCROLL===> HALF TRACE=> 021200 021020 021000 020900 020800 020700 020600 020500 020400 8 17.28.55 MAR 10,1990 0001 020400 PROCEDURE DIVISION USING PARMS TEST-THREE TEST-FOUR PASS- 0001 020500 DEMO-BEGIN. 0001 020600 GO TO DEMO-INIT. 0001 020700 DEMO-INIT. 0001 020800 OPEN OUTPUT OUTPUT01. 0001 020900 MOVE HD1 TO LINE-OUT. 0001 021000 PERFORM WRITE-LINE. S---> 021010 CALL 'A1'. 0001 021020 CALL 'A2'. U---> 021200 FORCING-THE-ABEND. ---> 021300 MOVE MASK1 TO BIN1. ---> 021310 DISPLAY MASK1 BIN1 BIN2 BIN3 BIN4. ---> 021400 MOVE ZERO TO MASK1. ---> 021500 MOVE MASK1 TO BIN1 021600 BIN2 021700 BIN3 021800 BIN4. ---> 021900 IF BIN1 = BIN2 022000 NEXT SENTENCE.

V Command (Set Variable Change Breakpoint)

The V line command sets a variable change breakpoint at the specified line. A when-name is automatically generated. The name is VRnnnnnn where n=line number of the breakpoint. This means you can have only one conditional set by the V line command per line. The breakpoint is triggered before the line is executed when the application determines that the value of a variable in the line changes. The condition is not checked before each verb. This command is only valid for COBOL or PL/I programs.

Cursor-sensitive variable change breakpoint: If you enter V and the cursor is placed on a COBOL or PL/I data item, pressing Enter designates that item as the variable change item.

The following panel shows variable change breakpoints being set on lines 1149 and 1154 of the program. You must press Enter after entering the breakpoints in order to set them:

CAMRCOB2 ---------- CA InterTest™ Batch NEXT BEFORE Intercept ----------------- Command ===> Scroll===> CUR TRACE=> 001151 001150 001149 001148 001162 001155 001154 001153 001151 001150 0 U0001 001141 ORDER-CALC. 0001 001142 MOVE CUSTOMER-VALUES TO CUSTOMER-ORDER. 0001 001143 MOVE ZEROES TO ORDER-SUB-TOTAL, SUB-6, LOOP-O 0001 001144 PERFORM TOTAL-ORDER THRU TOTAL-ORDER-EX 001145 UNTIL SUB-6 EQUAL 5. U---> 001146 ORDER-CALC-EX. ---> 001147 GO TO OPTIONS. 0101 001148 TOTAL-ORDER. v0101 001149 ADD 1 TO SUB-6. 0101 001150 ADD 1 TO LOOP-OUT. 0100 001151 MULTIPLY UNIT-PRICE(SUB-6) BY NO-OF-WIDGETS(S 001152 GIVING ITEM-TOTAL. 0100 001153 ADD ITEM-TOTAL TO ORDER-SUB-TOTAL. v0100 001154 MOVE 1 TO SUB-6. PP 5668-958 IBM VS COBOL II Release 3.2 09/05/90 CAMRCOB2 LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+-

+ (plus) Command (Increment a Subscript)

Use the plus (+) line command to increment the value of a subscript on a displayed data item. Display the data item using the LDI or LDX control commands or the L or H line commands. The format of the command is +nnn where nnn is any number from 1 to 999. The subscript is incremented by the amount specified by nnn. The default is 1, and this is the value that is used if nnn is not specified. More than one subscript may be incremented or decremented at the same time. This command is only valid for COBOL or PL/I programs.

The following panel shows a data display for WA-T1-3A(BIN1,4,1) of WA-TABLE-1 of WA-LEVEL1. Currently, WA-T1-3A(2,4,1) is displayed. Note the address and the value. The first subscript (BIN1) and the third subscript are incremented by the value of 2.

INT2DEMO ---------- CA InterTest™ Batch UNCOND BEFORE Intercept --------------- COMMAND ===> SCROLL===> HALF TRACE=> 022300 022200 022100 021900 021500 021400 021310 021300 021200 021020 ----------------------------------------------------------------------- 00262E08 ND 016800 06 WA-T1-3A 01. +2 BIN1 (2) (4) +2 (1) OF WA-TABLE-1 OF WA-LEVEL1 ----------------------------------------------------------------------- 0001 021200 FORCING-THE-ABEND. 0001 021300 MOVE MASK1 TO BIN1. 0001 021310 DISPLAY MASK1 BIN1 BIN2 BIN3 BIN4. 0001 021400 MOVE ZERO TO MASK1. 0001 021500 MOVE MASK1 TO BIN1 021600 BIN2 021700 BIN3 021800 BIN4. 0001 021900 IF BIN1 = BIN2 022000 NEXT SENTENCE. 0001 022100 TABLE-MOVE. 0001 022200 MOVE TABLE-FILL TO WA-TABLE-1 OF WA-LEVEL1. U---> 022300 NUM-EDITED-TEST. ---> 022310 MOVE 'XP' TO ED-ALPHA.

Pressing Enter causes the line commands to be executed. The value of BIN1 and the value of the third subscript have been incremented by 2, so that WA-T1-3A(4,4,3) is now the table item displayed. Note that by incrementing the subscript variable BIN1, the value of BIN1 has been changed to 4 as shown in the following panel:

INT2DEMO ---------- CA InterTest™ Batch UNCOND BEFORE Intercept --------------- COMMAND ===> SCROLL===> HALF TRACE=> 022300 022200 022100 021900 021500 021400 021310 021300 021200 021020 ------------------------------------------------------------------------ 00262E6C ND 016800 06 WA-T1-3A 03. BIN1 (4) (4) (3) OF WA-TABLE-1 OF WA-LEVEL1 ------------------------------------------------------------------------ 0001 021200 FORCING-THE-ABEND. 0001 021300 MOVE MASK1 TO BIN1. 0001 021310 DISPLAY MASK1 BIN1 BIN2 BIN3 BIN4. 0001 021400 MOVE ZERO TO MASK1. 0001 021500 MOVE MASK1 TO BIN1 021600 BIN2 021700 BIN3 021800 BIN4. 0001 021900 IF BIN1 = BIN2 022000 NEXT SENTENCE. 0001 022100 TABLE-MOVE. 0001 022200 MOVE TABLE-FILL TO WA-TABLE-1 OF WA-LEVEL1. U---> 022300 NUM-EDITED-TEST. ---> 022310 MOVE 'XP' TO ED-ALPHA.

- (minus) Command (Decrement a Subscript)

Use the minus (-) command to decrement the value of a subscript on a displayed data item. Display the data item using the LDI or LDX control commands or the L or H line commands. The format of the command is -nnn where nnn is any number from 1 to 999. The subscript is decremented by the amount specified by nnn. The default is 1, and this is the value that is used if nnn is not specified. You may increment or decrement more than one subscript at the same time. This command is only valid for COBOL or PL/I programs.

The following panel shows a data display for WA-T1-3A(BIN1,4,3) of WA‑TABLE-1 of WA-LEVEL1. Currently, WA-T1-3A(4,4,3) is displayed. Note the address and the value. The first subscript (BIN1) is decremented by 3, and the second and third subscripts are decremented by 1:

INT2DEMO ---------- CA InterTest™ Batch UNCOND BEFORE Intercept --------------- COMMAND ===> SCROLL===> HALF TRACE=> 022300 022200 022100 021900 021500 021400 021310 021300 021200 021020 ------------------------------------------------------------------------ 00262E6C ND 016800 06 WA-T1-3A 03. -3 BIN1 (4) -1 (4) -1 (3) OF WA-TABLE-1 OF WA-LEVEL1 ------------------------------------------------------------------------ 0001 021200 FORCING-THE-ABEND. 0001 021300 MOVE MASK1 TO BIN1. 0001 021310 DISPLAY MASK1 BIN1 BIN2 BIN3 BIN4. 0001 021400 MOVE ZERO TO MASK1. 0001 021500 MOVE MASK1 TO BIN1 021600 BIN2 021700 BIN3 021800 BIN4. 0001 021900 IF BIN1 = BIN2 022000 NEXT SENTENCE. 0001 022100 TABLE-MOVE. 0001 022200 MOVE TABLE-FILL TO WA-TABLE-1 OF WA-LEVEL1. U---> 022300 NUM-EDITED-TEST. ---> 022310 MOVE 'XP' TO ED-ALPHA.

Pressing Enter causes the line commands to be executed. The value of BIN1 has been decremented by 3, and the second and third subscripts have been decremented by 1, so that WA-T1-3A(1,3,2) is now the table item displayed.

Note that by decrementing the subscript variable BIN1, the value of BIN1 has been changed to 1 as shown in the following panel:

INT2DEMO ---------- CA InterTest™ Batch UNCOND BEFORE Intercept --------------- COMMAND ===> SCROLL===> HALF TRACE=> 022300 022200 022100 021900 021500 021400 021310 021300 021200 021020 ----------------------------------------------------------------------- 00262DCF ND 016800 06 WA-T1-3A 02. BIN1 (1) (3) (2) OF WA-TABLE-1 OF WA-LEVEL1 ----------------------------------------------------------------------- 0001 021200 FORCING-THE-ABEND. 0001 021300 MOVE MASK1 TO BIN1. 0001 021310 DISPLAY MASK1 BIN1 BIN2 BIN3 BIN4. 0001 021400 MOVE ZERO TO MASK1. 0001 021500 MOVE MASK1 TO BIN1 021600 BIN2 021700 BIN3 021800 BIN4. 0001 021900 IF BIN1 = BIN2 022000 NEXT SENTENCE. 0001 022100 TABLE-MOVE. 0001 022200 MOVE TABLE-FILL TO WA-TABLE-1 OF WA-LEVEL1. U0001 022300 NUM-EDITED-TEST.

<[nnnn] (Scroll Left) Command

The scroll left (<) command is used to scroll data in the keep window left. The format of the command is <[nnnn] where nnnn is any number from 1 to 9999. If the data length is greater than the display area, the data is scrolled the number of bytes indicated by nnnn. Data cannot be scrolled beyond the length of the data item. If the nnnn value is greater than the length of the data item, the display is positioned at the last n number of bytes that fit in the display area.

The following panel shows a data item scrolled left 5 bytes:

CAMRCOB2 ---------- CA InterTest™ Batch *INITIAL* Intercept ------------------- COMMAND ===> SCROLL ===> CSR TRACE=> ------------------------------------------------------------------------- 1F0A9630 000838 01 TRL-TABLE 1F0A9635 AN 000839 03 FILLER (+0005) EFGHIJKLMNOPQRSTUV 1F0A964B AN 000841 03 FILLER 1234567890 1F0A9655 AN 000843 03 FILLER -+=.,;:#*/()@&%$¢? ------------------------------------------------------------------------- 000875 PROCEDURE DIVISION USING PARAMETER-AREA. *--> 000876 START-PROGRAM. *--> 000877 OPEN OUTPUT REPORT-OUT. 000878 * -----------------------------------------------* 000879 * Welcome to the CA InterTest™ Batch COBOL II * 000880 * Demonstration Program. You are now at the * 000881 * Initial Breakpoint panel which is displayed * 000882 * upon entry to the first program to be tested. * 000883 * At this point, other breakpoints can be set * 000884 * and control commands can be issued before the * 000885 * program is executed. * 000886 * -----------------------------------------------* *--> 000887 MOVE R1498-TIMEI TO R1498-TIME. *--> 000888 PERFORM TIME-EDIT THRU TIME-EDIT-EX. 000889 * *--> 000890 MOVE R1498-TIMEO TO R1498-TIME. *--> 000891 PERFORM TIME-EDIT THRU TIME-EDIT-EX. *--> 000892 GO TO DISPLAY-1ST-PANEL. Note: Scrolling starts from relative zero. In the previous example the displayed character “E” is at real position 6 (+0005 relative to 0).

>[nnnn] (Scroll Right) Command

The scroll right (>) command is used to scroll data in the keep window right. The format of the command is >[nnnn] where nnnn is any number from 1 to 9999. If the data length is greater than the display area, the data is scrolled the number of bytes indicated by nnnn. Data cannot be scrolled beyond the length of the data item. If the nnnn value is greater than the length of the data item, the display is positioned at the first n number of bytes that fit in the display area.

The following panel shows a data item scrolled right 3 bytes:

CAMRCOB2 ---------- CA InterTest™ Batch *INITIAL* Intercept ------------------- COMMAND ===> SCROLL ===> CSR TRACE=> ------------------------------------------------------------------------- 1F0A9630 000838 01 TRL-TABLE 1F0A9632 AN 000839 03 FILLER (+0002) BCDEFGHIJKLMNOPQRS 1F0A964B AN 000841 03 FILLER 1234567890 1F0A9655 AN 000843 03 FILLER -+=.,;:#*/()@&%$¢? ------------------------------------------------------------------------- 000875 PROCEDURE DIVISION USING PARAMETER-AREA. *--> 000876 START-PROGRAM. *--> 000877 OPEN OUTPUT REPORT-OUT. 000878 * -----------------------------------------------* 000879 * Welcome to the CA InterTest™ Batch COBOL II * 000880 * Demonstration Program. You are now at the * 000881 * Initial Breakpoint panel which is displayed * 000882 * upon entry to the first program to be tested. * 000883 * At this point, other breakpoints can be set * 000884 * and control commands can be issued before the * 000885 * program is executed. * 000886 * -----------------------------------------------* *--> 000887 MOVE R1498-TIMEI TO R1498-TIME. *--> 000888 PERFORM TIME-EDIT THRU TIME-EDIT-EX. 000889 * *--> 000890 MOVE R1498-TIMEO TO R1498-TIME. *--> 000891 PERFORM TIME-EDIT THRU TIME-EDIT-EX. *--> 000892 GO TO DISPLAY-1ST-PANEL.

Note: Scrolling starts from relative zero. In the previous example the displayed character “B” is at real position 3 (+0002 relative to 0)