Deferred Breakpoints Feature
Start IPVLANGP with the bkp
parameter for a COBOL or PL/I SYSDEBUG file, a COBOL
LANGX file, a COBOL Version 5 program object containing DWARF debugging information, or a PL/I Version 6 program object
containing C_PLISRC class data. You can also start it from z/OS®
Debugger Utilities or Fault Analyzer for z/OS® Services menus. Here it is started from an
ISPF member list:
Menu Functions Confirm Utilities Help ─────────────────────────────────────────────────────────────────────────────── DSLIST JERRYBL.IPVLANGX Row 0000001 of 0000023 Command ===> Scroll ===> CSR Name Prompt Size Created Changed ID AFPBIM AFPBITM AFPLDOVL ASMHOLE ipvlangp COBEX1 bkp ❶ COBOV1 COBTINY CPPTST1 DACBB030 DACVD002 DAGOTST HRHP702C NAMUCSM OSVSC01 PLIPARM PLIPARME PLIPARM1 F1=Help F3=Exit F5=Rfind F7=Up F8=Down F9=Swap F10=Left F11=Right F12=Cancel
- ❶
- The
bkp
parameter enables setting of deferred breakpoints.
IPVLANGP then prompts for the z/OS® Debugger Repository and the program's load module name (default is program name):
Menu Functions Confirm Utilities Help ─ ┌────────────────────────── Deferred Breakpoints ───────────────────────────┐ D │ │ C │ IPVLANGP requires the name of the z/OS Debugger Repository and a load │ │ module name for program COBEX1 │ _ │ │ │ Repository (PDS/E) . . PRINT.PDS ❷ │ │ Load Module . . . . . COBEX1 │ │ │ I │ F1=Help F3=Exit F12=Cancel │ └───────────────────────────────────────────────────────────────────────────┘ COBTINY CPPTST1 DACBB030 DAGOTST HRHP702C NAMUCSM OSVSC01 PLIPARM PLIPARME PLIPARM1 F1=Help F3=Exit F5=Rfind F7=Up F8=Down F9=Swap F10=Left F11=Right F12=Cancel
- ❷
- The Repository data set name is saved in an ISPF variable and is automatically initialized to the last used data set name on subsequent invocations.
The main IPVLANGP panel now appears:
File Services ─────────────────────────────────────────────────────────────────────────────── IPVLANGP Line 1 Col 1 80 Command ===> Scroll ===> CSR IPVLANGX Print Utility V1R7M0 (AI41974 2015/08/ ----------------------------------------------- Program Name . . . . . . . . : COBEX1 Data Set Name. . . . . . . . : JERRYBL.IPVLANGX(COBEX1) Options in Effect. . . . . . : NoLocale Compiler name. . . . . . . . : IBM Enterprise COBOL for z/OS 4.2.0 Date of Compile. . . . . . . : 2015-04-30 Time of Compile. . . . . . . : 12.52.1130 Date of IPVLANGX extraction. : 2015-07-06 Time of IPVLANGX extraction. : 11.43.2206 Source listing -------------- ┌────────────────────────────────────────────────────────────────────? │ Place cursor on an executable source line number or label to add a │ -+----5- │ breakpoint │ └────────────────────────────────────────────────────────────────────┘ own F10=Left F11=Right
Any existing breakpoints for the program are retrieved from the repository. Line (Stmt) numbers where breakpoints are set will be highlighted, for example lines 173 and 175 in the following example:
File Services ─────────────────────────────────────────────────────────────────────────────── IPVLANGP Line 176 Col 1 80 Command ===> Scroll ===> CSR 00091C 000171 PERFORM CALC-TAX. 000173 CALC-TAX. 00093E 000174 IF ELECTRIC 000954 000175 COMPUTE BASE-AMOUNT = PRICE / CC 00097E 000176 COMPUTE TAX-AMOUNT = PRICE / BASE-AMOUNT 00097E 000177 ELSE 0009AC 000178 COMPUTE BASE-AMOUNT = CC / CYLINDERS 0009D6 000179 IF KW < 150 0009EA 000180 MOVE 10 TO BASE-AMOUNT 0009EA 000181 ELSE 0009F4 000182 MOVE 20 TO BASE-AMOUNT 0009FA 000183 IF ZERO-100 < 5 000A0E 000184 ADD 5 TO BASE-AMOUNT 000A0E 000185 ELSE 000A2C 000186 IF RED 000A3E 000187 ADD 2 TO BASE-AMOUNT 000A3E 000188 ELSE F1=Help F3=Exit F5=RptFind F6=AddBkp F7=Up F8=Down F10=Left F11=Right
Breakpoints can be added or viewed by pressing PF6, which is sensitive to the cursor position:
- With the cursor on a Line (Stmt) number, a popup appears allowing a new line or label breakpoint to be added, or an existing breakpoint to be modified (or cleared).
- If the cursor is outside of the source area (for example, on the command line), a list of existing breakpoints is shown allowing one or more to be worked with.
In the following example, PF6 is pressed with the cursor on the command line:
File Services ┌─────────────────────────────────────────────────────────────────────────────? │ Breakpoints Line 1 Col 1 76 │ │ │ │ S to select breakpoints to work with: │ │ s 000173 AT EVERY 10 FROM 1 TO 9 LABEL CALC-TAX; │ │ 000175 AT EVERY 10 FROM 9 TO 1 LINE 175 WHEN cc=0; │ │ │ │ *** Bottom of data. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Command ===> Scroll ===> CSR │ │ F1=Help F3=Exit F5=RptFind F7=Up F8=Down F12=Cancel │ └─────────────────────────────────────────────────────────────────────────────┘ 0008F4 000167 MOVE ZERO TO TAX-AMOUNT. 0008FA 000168 PERFORM REDO-TAX. 000170 REDO-TAX. 00091C 000171 PERFORM CALC-TAX. 000173 CALC-TAX. 00093E 000174 IF ELECTRIC 000954 000175 COMPUTE BASE-AMOUNT = PRICE / CC 00097E 000176 COMPUTE TAX-AMOUNT = PRICE / BASE-AMOUNT 00097E 000177 ELSE 0009AC 000178 COMPUTE BASE-AMOUNT = CC / CYLINDERS 0009D6 000179 IF KW < 150 0009EA 000180 MOVE 10 TO BASE-AMOUNT 0009EA 000181 ELSE 0009F4 000182 MOVE 20 TO BASE-AMOUNT 0009FA 000183 IF ZERO-100 < 5 000A0E 000184 ADD 5 TO BASE-AMOUNT 000A0E 000185 ELSE 000A2C 000186 IF RED 000A3E 000187 ADD 2 TO BASE-AMOUNT 000A3E 000188 ELSE F1=Help F3=Exit F5=RptFind F6=AddBkp F7=Up F8=Down F10=Left F11=Right
As shown, breakpoints are listed in z/OS® Debugger command format.
Enter the 'S' line command to work with one or more existing line or label breakpoints. Here, the line 173 breakpoint is selected:
File Services ┌─────────────────────────────────────────────────────────────────────────────? │ Breakpoints Line 1 Col 1 76 │ │ ┌─────────────────────────────────────────────────────────────────────────────? │ S │ Add Label Breakpoint Line 1 Col 1 76 │ │ s │ │ │ │ Label: │ │ │ 000173 CALC-TAX. │ │ * │ │ │ │ EVERY 10 FROM 1 TO 9 ❸ │ │ │ Action playback enable │ │ │ │ │ │ │ │ │ │ │ │ Clear breakpoint? N (Y/N) │ │ │ │ │ │ │ │ C │ Press ENTER to change/clear breakpoint. │ │ │ │ └── │ Command ===> Scroll ===> CSR │ 000 │ F1=Help F3=Exit F5=RptFind F7=Up F8=Down F12=Cancel │ 000 └─────────────────────────────────────────────────────────────────────────────┘ 000170 REDO-TAX. 00091C 000171 PERFORM CALC-TAX. 000173 CALC-TAX. 00093E 000174 IF ELECTRIC 000954 000175 COMPUTE BASE-AMOUNT = PRICE / CC 00097E 000176 COMPUTE TAX-AMOUNT = PRICE / BASE-AMOUNT 00097E 000177 ELSE 0009AC 000178 COMPUTE BASE-AMOUNT = CC / CYLINDERS 0009D6 000179 IF KW < 150 0009EA 000180 MOVE 10 TO BASE-AMOUNT 0009EA 000181 ELSE 0009F4 000182 MOVE 20 TO BASE-AMOUNT 0009FA 000183 IF ZERO-100 < 5 000A0E 000184 ADD 5 TO BASE-AMOUNT 000A0E 000185 ELSE 000A2C 000186 IF RED 000A3E 000187 ADD 2 TO BASE-AMOUNT 000A3E 000188 ELSE F1=Help F3=Exit F5=RptFind F6=AddBkp F7=Up F8=Down F10=Left F11=Right
The Add Label Breakpoint popup is used to add, change or clear a label breakpoint.
- ❸
- Line and label breakpoints may specify an EVERY clause and an Action.
File Services ┌─────────────────────────────────────────────────────────────────────────────? │ Breakpoints Line 1 Col 1 76 │ │ ┌─────────────────────────────────────────────────────────────────────────────? │ S │ Add Label Breakpoint Line 1 Col 1 76 │ │ s │ │ │ │ Label: │ │ │ 000173 CALC-TAX. │ │ * │ │ │ │ EVERY 10 FROM 1 TO 9 │ │ │ WHEN cc = 0 ❹ │ │ │ │ │ │ │ │ │ Action playback disable │ │ │ │ │ │ │ │ │ │ │ C │ Clear breakpoint? N (Y/N) │ │ │ │ └── │ │ 000 │ Press ENTER to change/clear breakpoint. │ 000 │ │ │ *** Bottom of data. │ 000 │ │ │ Command ===> Scroll ===> CSR │ 000 │ F1=Help F3=Exit F5=RptFind F7=Up F8=Down F12=Cancel │ 000 └─────────────────────────────────────────────────────────────────────────────┘ 00097E 000176 COMPUTE TAX-AMOUNT = PRICE / BASE-AMOUNT 00097E 000177 ELSE 0009AC 000178 COMPUTE BASE-AMOUNT = CC / CYLINDERS 0009D6 000179 IF KW < 150 0009EA 000180 MOVE 10 TO BASE-AMOUNT 0009EA 000181 ELSE 0009F4 000182 MOVE 20 TO BASE-AMOUNT 0009FA 000183 IF ZERO-100 < 5 000A0E 000184 ADD 5 TO BASE-AMOUNT 000A0E 000185 ELSE 000A2C 000186 IF RED 000A3E 000187 ADD 2 TO BASE-AMOUNT 000A3E 000188 ELSE F1=Help F3=Exit F5=RptFind F6=AddBkp F7=Up F8=Down F10=Left F11=Right
Similarly, the Add Line Breakpoint popup is used to add, change or clear (delete) a line breakpoint.
- ❹
- Line breakpoints may also specify a WHEN condition.
On exiting IPVLANGP, the following popup appears:
File Services ┌─────────────────────────────────────────────────────────────────────────────? │ Save Breakpoints for Program COBEX1 Line 1 Col 1 76 │ │ │ │ Select one of the following: │ │ 1. Save breakpoints │ │ 2. Exit without saving new or changed breakpoints │ │ 3. Clear all breakpoints for this program │ │ │ │ Breakpoints: │ │ 000173 AT EVERY 10 FROM 1 TO 9 LABEL CALC-TAX playback enable; │ │ 000175 AT EVERY 10 FROM 9 TO 1 LINE 175 WHEN cc=0 playback disable; │ │ │ │ *** Bottom of data. │ │ │ │ │ │ │ │ Command ===> Scroll ===> CSR │ │ F1=Help F3=Exit F5=RptFind F7=Up F8=Down F12=Cancel │ └─────────────────────────────────────────────────────────────────────────────┘ 0008F4 000167 MOVE ZERO TO TAX-AMOUNT. 0008FA 000168 PERFORM REDO-TAX. 000170 REDO-TAX. 00091C 000171 PERFORM CALC-TAX. 000173 CALC-TAX. 00093E 000174 IF ELECTRIC 000954 000175 COMPUTE BASE-AMOUNT = PRICE / CC 00097E 000176 COMPUTE TAX-AMOUNT = PRICE / BASE-AMOUNT 00097E 000177 ELSE 0009AC 000178 COMPUTE BASE-AMOUNT = CC / CYLINDERS 0009D6 000179 IF KW < 150 0009EA 000180 MOVE 10 TO BASE-AMOUNT 0009EA 000181 ELSE 0009F4 000182 MOVE 20 TO BASE-AMOUNT 0009FA 000183 IF ZERO-100 < 5 000A0E 000184 ADD 5 TO BASE-AMOUNT 000A0E 000185 ELSE 000A2C 000186 IF RED 000A3E 000187 ADD 2 TO BASE-AMOUNT 000A3E 000188 ELSE F1=Help F3=Exit F5=RptFind F6=AddBkp F7=Up F8=Down F10=Left F11=Right
Breakpoints are saved back to the Repository in XML format. Use DTU to convert the breakpoint XML definitions to a z/OS® Debugger commands file ready for use with the next debug session.
Deferred Breakpoints also feature in Fault Analyzer's COBOL Explorer.