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.