Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries in this appendix and you have the Initial Intercept for CAMRASM displayed on your screen.
Note: CAMRASM is an ISPF application.
Now you are going to set unconditional breakpoints at a number of procedure names in the demo program. In the basic demo you set an unconditional breakpoint using the u line command, which is equivalent to the UNCOND command. However, a quicker way to include unconditional breakpoints for a test session is to place the breakpoint commands in a data set member, and simply include that member when the Initial Intercept panel displays.
The ASMINCL data set member of CAI.CAISRC contains the application commands that set the breakpoints required for using the Advanced Options Demo for Assembler. Include this data set member as follows:
|
Action: |
Enter the following command at the *Initial* Intercept panel: include asmincl Press Enter. |
|
Result: |
The application processes the commands in the asmincl data set, and returns the following message in the upper-right corner of the screen: BREAKPOINT SET. |
CAMRASM ---------- CA InterTest™ Batch *INITIAL* Intercept ----- BREAKPOINT SET COMMAND ===> SCROLL ===> CUR TRACE=> 000005 R:D 00000 4 USING LDATA,R13 *--> 000000 47F0 F074 00074 5 B START-CAMRASM(,R15 6 *-------------------------------* 7 * Welcome to the CA InterTest * 8 * Batch Assembler demonstration * 9 * program. You are now at the * 10 * Initial Breakpoint panel, * 11 * which is displayed upon entry * 12 * to the first program to be * 13 * tested. At this point, other * 14 * breakpoints can be set and * 15 * control commands can be * 16 * issued before the program is * 17 * executed. * 18 *-------------------------------* *--> 000004 C3C1D4D9C1E2D440 19 DC CL8'CAMRASM' *--> 20 DC CL9'&SYSDATE' 00000C F0F561F1F661F0F3 + DC CL9'05/16/03' *--> 21 DC CL6'&SYSTIME' 000015 F1F74BF5F340 + DC CL6'17.53' *--> 00001B C1C4E5C1D5E3C1C7 22 DC C'CA INT
After setting the required breakpoints, access the Demo Session Options Menu by executing the demo program and choosing the Advanced Options Menu from the Welcome panel. Use the following steps:
|
Action: |
From the Initial Intercept panel, type GO and press Enter to execute the program. |
|
Result: |
The demo program begins execution and displays the Welcome panel. |
The Welcome Screen is shown next:
****************************************************************************** ****************************************************************************** ***** ***** ***** Welcome to the CA InterTest™ Batch Demo Session ***** ***** ***** ***** ***** ***** Before proceeding, please have on hand the User Guide ***** ***** which accompanies the Demo Session. ***** ***** ***** ***** In this Demo, we will debug an Assembler program which ***** ***** is included with CA InterTest™ Batch. ***** ***** ***** ***** ***** ***** To continue the Basic Demo, press ENTER. ***** ***** ***** ***** To access the Options Menu, press PF2. ***** ***** ****** ***** ENTER Basic Demo PF2 Advanced Options Menu PF3 Exit Demo ***** ****************************************************************************** ******************************************************************************
|
Action: |
Press PF2 to access the Options Menu for the Advanced Demo Session. |
|
Result: |
The Advanced Options Preliminary Screen is displayed, reminding you not to access the Options Menu without including the data set member ASMINCL. |
A sample Options Menu Preliminaries screen follows:
********************************************************************** ***** ***** ***** CA InterTest™ Batch Demo Session ***** ***** Options Menu ***** ***** Preliminaries ***** ***** ***** ********************************************************************** To use the Demo Options, you must first issue the command "INCLUDE ASMINCL", as described in the User Guide. If you have completed this step, press ENTER to go to the Options Menu. If you have not completed this step, press PF3 to terminate the demo and refer to the "Advanced Demo Preliminaries" section of the guide.
|
Action: |
Press Enter to continue. |
|
Result: |
The Demo Session Options Menu displays. |
A sample Demo Session Options Menu follows:
********************************************************************** ***** ***** ***** CA InterTest™ Batch Demo Session ***** ***** Options Menu ***** ***** ***** ********************************************************************** 1 Time-driven execution ( SLOW command and KEEP windows ) 2 Conditional Breakpoints ( Pseudo-code ) 3 Update Source code ( Splitting the screen ) 4 Interrupt a program loop ( SKIP command ) 5 Trace execution ( PREV & ADVANCE Commands ) 7 Histogram report ( Report identifying dead code ) Key in request: Press ENTER to continue or PF3 to terminate.
Each of the Options on the menu is independent and can be performed in any order. To use an Option, follow the appropriate section in this guide. Upon completing an Option, you return to the Menu.
Before you start, you should know that:
You can exit the demo from the Options Menu at any time.
|
Action: |
Press PF3. |
|
Result: |
The End Demo Session screen displays.
|
|
Action: |
Press Enter. |
|
Result: |
The CA InterTest™ Batch Program Breakpoint Intercept panel displays for an unconditional breakpoint at label GOBACK. (This breakpoint was set by a command in the ASMINCL include file.)
|
|
Action: |
Type GO and press Enter to execute the program. |
|
Result: |
The demo program ends, and the CA InterTest™ Batch Entry panel displays. |
If you exit the CA InterTest™ Batch Demo, you can return at any time to perform another advanced option. Just repeat the preliminary steps given in the beginning of this chapter. Remember to enter the following command at the Initial Breakpoint screen:
include asmincl
This option illustrates how you can slow the execution of your program. The CA InterTest™ Batch SLOW command executes one statement in your program every few seconds. The exact time interval is specified when you issue the SLOW command. Using the SLOW command together with a keep window is an especially effective testing technique; it allows you to halt the program whenever you see a problem, without having to determine the breakpoint in advance.
Note: Before proceeding, be sure you have completed the steps outlined in Advanced Demo Preliminaries in this appendix and you have the CA InterTest™ Batch 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 in finding them, ask a technical support person before you begin.
|
Action: |
Key in Option 1. Press Enter. |
|
Result: |
CAMRASM displays the screen that describes what occurs in this part of the demo session. |
A sample screen showing Option 1: Time-Controlled Statement Execution follows:
********************************************************************** ***** ***** ***** CA InterTest™ Batch Demo Session ***** ***** Time-controlled statement execution ***** ***** ***** ********************************************************************** This feature shows you the advantages of using the SLOw command. SLOw resumes execution of your program one verb at a time at an interval specified by you. This command is especially effective when used in conjunction with the Keep window. Here is what will happen: 1. CA InterTest™ Batch halts the DEMO program at an unconditional breakpoint 2. You open a Keep window and then issue the SLOw command. 3. CA InterTest™ Batch slowly executes the DEMO program at a rate of one verb every 2 seconds. 4. You will regain control by pressing an attention key. Press ENTER to continue or PF3 to return to the Options Menu.
|
Action: |
Press Enter. |
|
Result: |
CA InterTest™ Batch halts CAMRASM at an unconditional breakpoint set at label PAY_CALC. The statement is highlighted. |
Open a keep window that displays the values of YTD and X_AXIS_YTD by entering the commands specified below. Notice how you can use the short form of the keep command (k) and use the TSO command delimiter (normally a semi-colon) to string multiple commands on a single command line.
|
Action: |
Key in the following command: k ytd; k x_axis_ytd |
|
Result: |
CA InterTest™ Batch displays a keep window showing the current values of YTD and X_AXIS_YTD. |
A sample screen showing the keep window for YTD and X_AXIS_YTD follows:
CAMRASM ---------- CA InterTest™ Batch UNCOND BEFORE Intercept --------------- COMMAND ===> SCROLL ===> CUR TRACE=> 000440 000438 000437 000436 000435 000434 000432 000431 000430 000429 0 ------------------------------------------------------------------------- 0014CE9C AN 001325 02 YTD 000000000 0014CE7F AN 001319 02 X_AXIS_YTD ------------------------------------------------------------------------- 0001 000414 D208 D66B C9BE 0066B 009BE 438 MVC TOTALGROSS,ZEROS U---> 00041A 440 PAY_CALC DS 0H ---> 00041A 1F00 441 SLR R0,R0 ---> 00041C 4000 D102 00102 442 STH R0,SUB_4 ---> 000420 444 PAY_CALC_LOOP DS 0H ---> 000420 45E0 C440 00440 445 BAL R14,POPULATE_GRAPH ---> 000424 4810 D102 00102 447 LH R1,SUB_4 ---> 000428 4110 1001 00001 448 LA R1,1(,R1) ---> 00042C 4010 D102 00102 449 STH R1,SUB_4 ---> 000430 4910 C9CE 009CE 451 CH R1,NO_OF_HOURS ---> 000434 4740 C420 00420 452 BL PAY_CALC_LOOP ---> 000438 45E0 C7EC 007EC 454 BAL R14,UPDATE_CHEQUE ---> 00043C 47F0 C316 00316 456 B OPTIONS ---> 000440 458 POPULATE_GRAPH DS 0H ---> 000440 4820 D102 00102 459 LH R2,SUB_4 ---> 000444 4C20 CDF4 00DF4 460 MH R2,=Y(L'MONTH_ITEM
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.
|
Action: |
Key in the command: slow 2 Press Enter. |
|
Result: |
CA InterTest™ Batch initiates a time-controlled execution of CAMRASM, at a rate of one statement every two seconds.
|
|
Action: |
When the value of X_AXIS_YTD in the keep window is MAR, press the ATTN or PA1 key. Try the ATTN key first. |
|
Result: |
The application displays the Attention Intercept panel, as shown in the following panel. |
A sample Attention Intercept panel follows:
CAMRASM ---------- CA InterTest™ Batch ATTENTION Intercept ------------------- COMMAND ===> SCROLL ===> CSR TRACE=> 000474 000473 000470 000468 000467 000466 000463 000461 000460 000459 0 ------------------------------------------------------------------------- 0013EE9C AN 001323 02 YTD 017539242 0013EE7F AN 001317 02 X_AXIS_YTD Mar ------------------------------------------------------------------------- R:2 00000 462 USING MONTH,R2 0004 00044C D202 D657 2000 00657 00000 463 MVC X_AXIS_YTD,MONTH_I 464 DROP R2 0003 000452 4820 D102 00102 466 LH R2,SUB_4 OPTIONS MENU PROCESSING Active Usings: CAMRASM(X'1000'),R12 LDATA(X'1000'),R13 Loc Object Code Addr1 Addr2 Stmt Source Statement 0003 000456 4C20 CDF6 00DF6 467 MH R2,=Y(L'X_AXIS_ITE 0003 00045A 4122 D65B 0065B 468 LA R2,X_AXIS_LINE(R2) R:2 00000 469 USING XAXIS,R2 0003 00045E D201 2000 CA84 00000 00A84 470 MVC X_AXIS_ITEM,TOKEN_ 471 DROP R2 0003 000464 4820 D102 00102 473 LH R2,SUB_4 0003 000468 4C20 CDF8 00DF8 474 MH R2,=Y(L'MONTHLY_AM 0003 00046C 4122 CAAC 00AAC 475 LA R2,MONTHLY_THIS(R2 R:2 00000 476 USING MGROSS,R2
Review what you just did.
This combination of using keep windows, the slow command, and an Attention Intercept allows you to carefully control and monitor your program execution, while tracking the values of specific variables.
Note: Attention Intercept panel is only displayed when you press the ATTN or PA1 key and then the application executes a statement in a program that is currently being monitored.
Before returning to the Options Menu of the advanced demo, remove the keep window as follows:
|
Action: |
Key in the command: remove all Press Enter. |
|
Result: |
The application removes the keep window for YTD and X_AXIS_YTD on the Attention Intercept panel. |
|
Action: |
Type GO and press Enter to continue execution. |
|
Result: |
CAMRASM resumes execution, and displays the Options Menu. |
This concludes Option 1: Time Controlled Execution. Select another option and go to the appropriate section in this guide, or exit the demo using PF3.
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 in this appendix and you have the Demo Session Options Menu displayed on your screen.
|
Action: |
Key in Option 2. Press Enter. |
|
Result: |
CAMRASM displays the screen that describes what occurs in this part of the demo session: |
********************************************************************** ***** ***** ***** CA InterTest™ Batch Demo Session ***** ***** Conditional Breakpoints ***** ***** ***** ********************************************************************** Conditional Breakpoints are one of the most powerful features at your disposal. CA InterTest™ Batch will automatically halt your program's execution only if a certain condition you specified becomes true. This is what will happen: 1. CA InterTest™ Batch halts the DEMO program at an unconditional breakpoint 2. You issue the COND or When command and display the conditional breakpoint menu. 3. You enter the condition under which you wish execution to be halted and you specify the pseudo-code you want executed at the breakpoint. Press ENTER to continue or PF3 to return to the Options Menu.
|
Action: |
Press Enter. |
|
Result: |
The application halts CAMRASM at an unconditional breakpoint. The statement at the breakpoint is highlighted. |
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.
|
Action: |
Key the following in the Command field: cond Press Enter. |
|
Result: |
The application displays the When panel. WHEN is a synonym for COND. |
A sample When Panel to set unconditional breakpoint follows:
------------------- 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 ===> DATA-AREA-1 ===> OPERATOR ===> (EQ, NE, LT, GT, LE, GE, =, <>, <, >, <=, >=) DATA-AREA-2 ===> AFTER ===> N (Y/N) COMMANDS TO BE EXECUTED AT WHEN CONDITION: ===>
|
Action: |
Make the following entries on the When panel: 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, =, <>, <, >, <=, >=) DATA-AREA-2 ===> 000060000 AFTER ===> N (Y/N) COMMANDS TO BE EXECUTED AT WHEN CONDITION: ===> k subtotal; set totalgross = 000200000; k totalgross
|
Result: |
The application displays the following message in the top right corner of the When panel: WHEN CONDITION SET. |
|
Action: |
Press PF3 to exit the When panel. |
|
Result: |
The application brings you to the Intercept panel. |
|
Action: |
Continue execution by typing GO and pressing Enter. |
|
Result: |
CAMRASM resumes execution until the condition you set for the YTDCOND breakpoint is met; when the value of SUBTOTAL is greater than or equal to 60000, the application halts execution, and executes the commands you entered for the conditional breakpoint; it displays a keep window for SUBTOTAL, sets TOTALGROSS to 200000, 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:
CAMRASM ---------- CA InterTest™ Batch WHEN YTDCOND BEFORE Intercept --------- COMMAND ===> SCROLL ===> CUR TRACE=> 000545 000544 000543 000542 000541 000539 000538 000537 000536 000523 ------------------------------------------------------------------------ 001428CE AN 001329 02 SUBTOTAL 00009716H 001428B3 AN 001324 02 TOTALGROSS 000200000 ------------------------------------------------------------------------ GR 0-7 00000000 00000002 1F1A0C90 1F1A0FA6 00142A1E FFEBD5E2 00000000 00000000 8-F 00000000 00000000 00000000 00000000 9F1A01C8 00142248 9F1A06A2 00000000 ------------------------------------------------------------------------ 0003 00050E F384 D686 D058 00686 00058 543 UNPK SUBTOTAL,LDWORK(5) 0003 000514 96F0 D68E 0068E 544 OI SUBTOTAL+8,X'F0' 0002 000518 D208 D67D D686 0067D 00686 545 MVC BILL_YTD,SUBTOTAL 546 DROP R2 0002 00051E 07FE 548 BR R14 ---> 000520 550 DEMONSTRATE_SPLIT_SCREEN DS 0H 551 *------------------------------- 552 * This section of the demo 553 * shows you how to SPLIT the 554 * screen .. 555 *------------------------------- ---> 000520 58F0 D050 00050 556 L R15,LDLINK@ 557 CALL (15),(DSPLY,COBDPN
Now remove the conditional breakpoint before continuing.
|
Action: |
Return to the When panel by entering the command: when Press Enter. |
|
Result: |
The When panel displays. |
|
Action: |
Key in the following on the When panel: OPTION: ===> r WHEN NAME ===> ytdcond Press Enter |
|
Result: |
The application displays the following message in the top right corner of the When panel: WHEN DELETED. |
|
Action: |
Press PF3 to exit the When panel. |
|
Result: |
The application brings you to the previous Intercept panel. |
Remove the keep window before continuing execution.
|
Action: |
Key in the following command: remove all Press Enter. |
|
Result: |
The keep window is removed. |
Return to the Options Menu by continuing execution.
|
Action: |
Type GO and press Enter. |
|
Result: |
CAMRASM resumes execution and displays the Options Menu. |
This concludes Option 2: Conditional Breakpoints. Select another option and go to the appropriate section in this guide, or exit the demo using PF3.
This option illustrates how you can use the ISPF or 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 in this appendix and you have the Demo Session Options Menu displayed on your screen.
|
Action: |
Key in Option 3. Press Enter. |
|
Result: |
CAMRASM displays the screen that describes what occurs in this part of the demo session. |
A sample Option 3: Updating Source Code follows:
******************************************************************** ***** ***** ***** CA InterTest™ Batch Demo Session ***** ***** Updating Source Code ***** ***** ***** ******************************************************************** Because CA InterTest™ Batch is ISPF-compliant, at any time during your testing you can SPLIT your screen and engage another ISPF logical session. This enables you to update your source code with fixes as you find them. 1. CA InterTest™ Batch halts the DEMO program at an unconditional breakpoint. 2. You SPLIT the screen using the SPLIT PF key as defined in your profile. Press ENTER to continue or PF3 to return to the Options Menu.
|
Action: |
Press Enter. |
|
Result: |
The application halts CAMRASM at an unconditional breakpoint at the label SPLIT_SCREEN. |
|
Action: |
Tab about halfway down your screen and press the SPLIT PF key defined in your ISPF profile (normally PF2). |
|
Result: |
The ISPF Primary Option Menu displays in the bottom half of your screen. |
A sample panel using a split-screen from an Intercept Panel (ISPF Users) 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: 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
If you had found an error in your program code, you can use the ISPF menu 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.
|
Action: |
Remove your ISPF split-screen using the command: =x |
|
Result: |
You return to a full-screen display of the unconditional breakpoint shown in the previous panel.
|
|
Action: |
Type GO and press Enter to continue execution. |
|
Result: |
You return to the Demo Options Menu. |
This concludes Option 3: Update Source Code. Select another option and go to the appropriate section in this guide, or exit the demo using PF3.
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 in this appendix 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.
|
Action: |
Key in Option 4. Press Enter |
|
Result: |
CAMRASM displays the screen that describes what occurs in this part of the demo session. |
A sample screen of Option 4: Interrupt a looping program follows:
********************************************************************** ***** ***** ***** CA InterTest™ Batch Demo Session ***** ***** Interrupt a looping program ***** ***** ***** ********************************************************************** CA InterTest™ Batch allows you to interrupt programs in tight loops. Using the FREQuency counter you can trace the bug that causes a loop and then fix it by dynamically changing your program's executable code - without a re-compilation !! 1. CA InterTest™ Batch halts the DEMO program at an unconditional breakpoint. 2. You will allow the program to loop. 3. You interrupt the loop using an attention key. 4. Using Keep windows and the statement Skip feature you will fix the bug by modifying the executable code. Press ENTER to continue or PF3 to return to the Options Menu.
|
Action: |
Press Enter. |
|
Result: |
The application halts CAMRASM at an unconditional breakpoint set at ORDER_CALC. |
A sample screen showing CAMRASM 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.
|
Action: |
Continue execution by typing GO and pressing enter. |
|
Result: |
CAMRASM 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.
|
Action: |
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. |
|
Result: |
The Attention Intercept panel displays. |
Continue with the Continuing from the Attention Routine section.
Note: If you do not successfully stop execution with the ATTN or PA1 key before 1024 executions of the demo program loop, you reach a safety net conditional breakpoint. If you reach this breakpoint, instructions for continuing are given in the Continuing from the "Safety Net" Conditional Breakpoint section.
Follow this section only if you see the breakpoint in the following panel. If you do not, continue with the Continuing from the Attention Routine section.
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;
To continue with the looping program demo, you must press the ATTN or PA1 key before 1024 executions of the loop this time. To continue the program loop, use the following steps:
XC ORDER_SUB_TOTAL,ORDER_SUB_TOTAL
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:
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.
The application now displays the Attention Intercept panel. A sample showing an Attention Intercept follows:
CAMRPLI ---------- CA InterTest™ Batch ATTENTION Intercept ------------------- COMMAND ===> SCROLL ===> CUR 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
CAMRASM keeps executing the TOTAL_ORDER routine, as you can see from your Attention Intercept screen display. 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 SUB_6 and then execute slowly using the SLOW command. This time you use the abbreviated form of the keep command: k.
|
Action: |
Key in the following command to set the keep window: k sub_6 Press Enter. |
|
Result: |
The application displays a keep window for the variable SUB_6. |
A sample screen showing the Keep Window to View SUB_6 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( 228 2 0 DCL 1 TABLE_OF_SORTS, 3 TABLE_ELEMENT (60) CHAR(1); ---> 229 2 0 DO I = 1 TO 17;
|
Action: |
Key in the following command to execute one CAMRASM statement every two seconds: slow 2 Press Enter. |
|
Result: |
CAMRASM continues a slow execution. As the code executes, you can see the code looping, and you can see the corresponding value of SUB_6 in the keep window. |
The following sample screen of a SLOW 2 Execution shows a Loop and SUB_6 problem:
CAMRASM ---------- CA InterTest™ Batch STEP BEFORE Intercept ----------------- OMMAND ===> SCROLL ===> CUR TRACE=> 000652 000651 000649 000648 000647 000646 000638 000637 000641 000640 0 ------------------------------------------------------------------------- 0013F92E HX 001237 02 SUB_6 0001 ------------------------------------------------------------------------- R:2 00000 650 USING ORDER,R2 1131 0005CE F873 D058 2002 00058 00002 651 ZAP LDWORK,UNIT_PRICE 1130 0005D4 FC73 D058 2006 00058 00006 652 MP LDWORK,NO_OF_WIDGE 1130 0005DA D204 D0F3 D05B 000F3 0005B 653 MVC ITEM_TOTAL,LDWORK+ 654 DROP R2 1130 0005E0 4810 D106 00106 656 LH R1,SUB_6 1130 0005E4 4110 1001 00001 657 LA R1,1(,R1) 1130 0005E8 4010 D106 00106 658 STH R1,SUB_6 1130 0005EC 4810 D10C 0010C 660 LH R1,LOOP_OUT 1130 0005F0 4110 1001 00001 661 LA R1,1(,R1) 1130 0005F4 4010 D10C 0010C 662 STH R1,LOOP_OUT 1129 0005F8 D201 D106 C9CC 00106 009CC 664 MVC SUB_6,ONE 1129 0005FE 07FE 666 BR R14 ---> 000600 668 DEMONSTRATE_PREV_COMMAND DS 0H 669 *-------------------------------* 670 * This section of the demo *
Notice that SUB_6 changes from 1 to 2, but back to 1 again. SUB_6 is being reset to 1, and causing the program to loop. The value of SUB_6 is causing the TOTAL_ORDER routine to continue to be executed.
|
Action: |
Halt execution again by pressing the ATTENTION or PA1 key. After the Attention Routine message displays, press Enter. |
|
Result: |
The application brings you to another Attention Intercept panel. The current statement is highlighted. |
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.
|
Action: |
Tab down to the statement: 'MVC SUB_6,ONE' and key an 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; 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;
|
Result: |
The application skips the statement that sets SUB_6 to 1, and executes the code as if the statement was removed.
|
|
Action: |
Back up to the first statement in the TOTAL_ORDER procedure, 'LH R2,SUB_6', and type a g to the left of the line, to continue execution from that point. Your entry should match the following panel: |
CAMRASM ---------- CA InterTest™ Batch ATTENTION Intercept ------------------- COMMAND ===> SCROLL ===> CUR TRACE=> 000652 000651 000649 000648 000647 000646 000638 000637 000641 000640 0 ------------------------------------------------------------------------- 0013F92E HX 001237 02 SUB_6 0001 ------------------------------------------------------------------------- 1129 0005BA 4740 C5B0 005B0 641 BL ORDER_CALC_LOOP U---> 0005BE 643 ORDER_CALC_EX DS 0H ---> 0005BE 47F0 C316 00316 644 B OPTIONS 1131 0005C2 646 TOTAL_ORDER DS 0H g1131 0005C2 4820 D106 00106 647 LH R2,SUB_6 1131 0005C6 4C20 CE00 00E00 648 MH R2,=Y(ORDER_LEN) 1131 0005CA 4122 D6E4 006E4 649 LA R2,CUSTOMER_ORDERS R:2 00000 650 USING ORDER,R2 1131 0005CE F873 D058 2002 00058 00002 651 ZAP LDWORK,UNIT_PRICE 1130 0005D4 FC73 D058 2006 00058 00006 652 MP LDWORK,NO_OF_WIDGE 1130 0005DA D204 D0F3 D05B 000F3 0005B 653 MVC ITEM_TOTAL,LDWORK+ 654 DROP R2 1130 0005E0 4810 D106 00106 656 LH R1,SUB_6 1130 0005E4 4110 1001 00001 657 LA R1,1(,R1) 1130 0005E8 4010 D106 00106 658 STH R1,SUB_6 1130 0005EC 4810 D10C 0010C 660 LH R1,LOOP_OUT 1130 0005F0 4110 1001 00001 661 LA R1,1(,R1)
|
|
Press Enter. |
|
Result: |
CAMRASM 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 ORDER_CALC_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. ------------------------------------------------------------------------- 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;
CAMRASM finally exited out of the loop that executed the TOTAL_ORDER routine and then continued until it reached the unconditional breakpoint set at ORDER_CALC_EX (one of the unconditional breakpoints included in the data set member asmincl).
You can see from the keep window that the value of SUB_6 is 5. This is the proper value to permit the exit of the ORDER_CALC routine. Thus, the use of the skip command allowed us to dynamically fix the program code that caused the loop, and continue execution.
Before going back to the options menu, remove the keep window and skip command as follows.
|
Action: |
Key in the command: remove all Tab down to the 'MVC SUB_6,ONE' statement in the TOTAL_ORDER routine and type over the S to the left of the statement with an x. Press Enter. |
|
Result: |
The keep window is removed, and the skip line command is removed.
|
|
Action: |
Continue execution by typing GO and pressing Enter. |
|
Result: |
CAMRASM 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 in this guide, or exit the demo using PF3.
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 in this appendix and you have the Demo Session Options Menu displayed on your screen.
|
Action: |
Key in Option 5. Press Enter. |
|
Result: |
CAMRASM displays the screen that describes what occurs in this part of the demo session. |
The following sample screen shows Option 5: Trace Program Execution:
********************************************************************** ***** ***** ***** 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.
|
Action: |
Press Enter. |
|
Result: |
The application halts CAMRASM at an unconditional breakpoint that you included at the beginning of the demo. |
The following sample screen shows CAMRASM 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 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 CAMRASM resumes execution; the PREV and ADVANCE only scroll the statements in the trace.
|
Action: |
Key in the following in the Command field: prev 9 Press Enter. |
|
Result: |
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 ); 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.)
|
Action: |
Key in the command: a Press Enter. |
|
Result: |
The application highlights the next statement executed. |
|
Action: |
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 */ /* 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
|
Result: |
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. |
Now you can return to the current statement, that is, the statement where execution was halted prior to the unconditional breakpoint.
|
Action: |
Enter the command: cs Press Enter. |
|
Result: |
The application displays the original Breakpoint Intercept panel shown in the beginning of this option. |
|
Action: |
Key in the command: go Press Enter |
|
Result: |
CAMRASM resumes execution and displays the Advanced Options Demo Screen. You can continue with any option or exit. |
This concludes Option 5: Trace Program Execution. Select another option and continue with the appropriate section in this guide, or press PF3 to end the demo.
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 in this appendix and you have the Demo Session Options Menu displayed on your screen.
|
Action: |
Key in Option 7. Press Enter. |
|
Result: |
CAMRASM displays the screen that describes what occurs in this part of the demo session. |
The following screen shows Option 7: Histogram Report:
********************************************************************** ***** ***** ***** CA InterTest™ Batch Demo Session ***** ***** Histogram Command ***** ***** ***** ********************************************************************** The HIstogram command writes the execution histogram to DD name INT1REPT. The histogram consists of one line per executable statement. The line contains the statement number, the execution frequency counter and a graphic representation of the number of times the statement has been executed. This command is especially useful when issued at program exit in identifying " dead " code. What will happen is: 1. CA InterTest™ Batch halts the DEMO program at an unconditional breakpoint 2. You enter the HIst command in the command line. 3. CA InterTest™ Batch will write the histogram to the dataset associated with the DD name INT1REPT which can be viewed by splitting the screen. Press ENTER to continue or PF3 to return to the Options Menu.
|
Action: |
Press Enter. |
|
Result: |
The application halts CAMRASM at an unconditional breakpoint set at the program exit. |
The following screen shows the breakpoint intercept at label GOBACK:
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. */ /*------------------------------------------------*/ 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.
|
Action: |
Key in the command: hist Press Enter. |
|
Result: |
The application returns the following message: 'HISTOGRAM SUCCESSFULLY WRITTEN' |
The report is written to the data set associated with the ddname INT1REPT that can be viewed by splitting the screen.
|
Action: |
Tab a few lines down your screen and press the SPLIT PF key defined in your ISPF profile (normally PF2).
|
|
Result: |
The ISPF Main Menu displays in the split-screen area.
|
|
Action: |
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 in this appendix. The suggested data set name was: userid.INT1REPT |
Note: In the previous example, the report is viewed in SDSF.
|
Result: |
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/06 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 |* 000047 0001 |* 000048 0001 |* 000049 0001 |* 000050 ---- | 000051 ---- |
Page down to the end of the report using the maximum command with PF8.
|
Action: |
Type in the command: m Press PF8. |
|
Result: |
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/06 18:06:44 Command ====> Scroll *===> CSR GSVX006I End of data ---------------------- Lvl 4 Row 165-195/195 Col 1-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) PER AST 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 902. Note the corresponding line number in your program that is unexecuted.
|
Action: |
Remove your split-screen using the command: x |
|
Result: |
You return to a full-screen display of the Program Exit Intercept shown in the beginning of this option. |
Use the Find Statement (FS) command to display the code that was never executed.
|
Action: |
Type in the command: fs 902 Press Enter. |
|
Result: |
The application displays the requested line of code. |
|
|
Note: Depending on your assemble options, line 902 may not be the label WRITE_ERROR. If this is the case, use the statement number you found by scrolling up from the end of the histogram report. |
The following screen displays the unexecuted code:
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 an error routine 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.
Now return to the current statement in the CAMRASM program.
|
Action: |
Type in the command: cs Press Enter. |
|
Result: |
The application displays the Program Exit Intercept panel. |
|
Action: |
To continue the advanced demo, enter the command go options and press Enter. or To end the demo, enter the command GO. |
|
Result: |
If you are continuing the demo, CAMRASM program execution continues with the display of the Advanced Options Menu. Choose another option from the menu. or If you are exiting the demo, CAMRASM 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. |
|
Copyright © 2013 CA.
All rights reserved.
|
|