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.