Divide-by-zero error

Figure 1 demonstrates a divide-by-zero error. In this example, the main PL/I for MVS™ & VM routine passed bad data to a PL/I for MVS & VM subroutine. The bad data in this example is 0, and the error occurred when the subroutine SUB1 attempted to use this data as a divisor.

Figure 1. PL/I for MVS & VM routine with a divide-by-zero error
5688-235 IBM PL/I for MVS & VM          Ver 1 Rel 1 Mod 1                              27 FEB 07   13:57:59     PAGE   1            
OPTIONS SPECIFIED                                                                                                                   
*PROCESS  GOSTMT LIST S STG TEST MAP NOOPTIONS;                                                                                     
5688-235 IBM PL/I for MVS & VM          SAMPLE: PROC  OPTIONS(MAIN) ;                                           PAGE   2            
                    SOURCE LISTING                                                                                                  
    STMT                                                                                                                            
                                                                                                                                    
       1  SAMPLE: PROC  OPTIONS(MAIN) ;                                                                                             
       2       On error                                                                                                             
                 begin;                                                                                                             
       3           On error system;        /* prevent nested error conditions */                                                    
       4           Call PLIDUMP('TBC','PLIDUMP called from error ON-unit');                                                         
       5           Put Data;               /* Display variables */                                                                  
       6       End;                                                                                                                 
                                                                                                                                    
       7       DECLARE                                                                                                              
                 A_number    Fixed Bin(31),                                                                                         
                 My_Name     Char(13),                                                                                              
                 An_Array(3) Fixed Bin(31) init(1,3,5);                                                                             
                                                                                                                                    
       8       Put skip list('Sample Starting');                                                                                    
       9       A_number = 0;                                                                                                        
      10       My_Name = 'Tery Gillaspy';                                                                                           
                                                                                                                                    
      11       Call Sub1(a_number, my_name, an_array);                                                                              
                                                                                                                                    
      12    SUB1:  PROC(divisor, name1, Array1);                                                                                    
      13          Declare                                                                                                           
                   Divisor   Fixed Bin(31),                                                                                         
                   Name1     Char(13),                                                                                              
                   Array1(3) Fixed Bin(31);                                                                                         
      14           Put skip list('Sub1 Starting');                                                                                  
      15           Array1(1) = Array1(2) / Divisor;                                                                                 
      16           Put skip list('Sub1 Ending');                                                                                    
      17    End SUB1;                                                                                                               
                                                                                                                                    
      18      Put skip list('Sample Ending');                                                                                       
                                                                                                                                    
      19  End;                                                                                                                      
5688-235 IBM PL/I for MVS & VM          SAMPLE: PROC  OPTIONS(MAIN) ;                                           PAGE   3            
                    STORAGE REQUIREMENTS                                                                                            
BLOCK, SECTION OR STATEMENT     TYPE                  LENGTH   (HEX)    DSA SIZE   (HEX)                                            
*SAMPLE1                        PROGRAM CSECT           1060     424                                                                
*SAMPLE2                        STATIC CSECT             860     35C                                                                
SAMPLE                          PROCEDURE BLOCK          428     1AC         304     130                                            
BLOCK 2      STMT 2             ON UNIT                  298     12A         296     128                                            
SUB1                            PROCEDURE BLOCK          332     14C         256     100                                            
5688-235 IBM PL/I for MVS & VM          SAMPLE: PROC  OPTIONS(MAIN) ;                                           PAGE   4            
                          STATIC INTERNAL STORAGE MAP       0000F0  80000000              A..LOCATOR

Since variables are not normally displayed in a PLIDUMP dump, this routine included a PUT DATA statement, which generated a listing of arguments and variables used in the routine. Figure 2 shows this output.

Figure 2. Variables from routine SAMPLE
1Sample Starting
 Sub1 Starting        A_NUMBER=             0 MY_NAME='Tery Gillaspy' AN_ARRAY(1)=  1
 AN_ARRAY(2)=          3                      AN_ARRAY(3)=             5;

The routine in Figure 1 was compiled with the LIST compiler option, which generated the object code listing shown in Figure 3.

Figure 3. Object code listing from example PL/I for MVS & VM routine
* STATEMENT NUMBER  15                                                                                                              
0003A2  58 B0 D 0C8               L     11,200(0,13)                                                                                
0003A6  58 40 B 004               L     4,4(0,11)                                                                                   
0003AA  58 90 3 0B4               L     9,180(0,3)                                                                                  
0003AE  5C 80 4 004               M     8,4(0,4)                                                                                    
0003B2  58 70 3 0D4               L     7,212(0,3)                                                                                  
0003B6  5C 60 4 004               M     6,4(0,4)                                                                                    
0003BA  58 80 D 0C0               L     8,192(0,13)                                                                                 
0003BE  58 60 B 000               L     6,0(0,11)                                                                                   
0003C2  5F 60 4 000               SL    6,0(0,4)                                                                                    
0003C6  58 E7 6 000               L     14,VO..ARRAY1(7)                                                                            
0003CA  8E E0 0 020               SRDA  14,32                                                                                       
0003CE  5D E0 8 000               D     14,DIVISOR                                                                                  
0003D2  50 F9 6 000               ST    15,VO..ARRAY1(9)

Figure 4 shows the Language Environment dump for routine SAMPLE.

Figure 4. Language Environment dump from example PL/I for MVS & VM routine (Part 1 of 3)
CEE3DMP V1 R12.0: PLIDUMP called from error ON-unit                                 05/23/10 1:58:02 PM                  Page:    1  
ASID: 003E   Job ID: JOB29826   Job name: LEDGSMP3   Step name: GO         UserID: HEALY                                            
                                                                                                                                    
CEE3845I CEEDUMP Processing started.                                                                                                
PLIDUMP was called from statement number 4 at offset +000000D6 from ERR  ON-unit with entry address 2090022C                        
                                                                                                                                    
Information for enclave SAMPLE                                                                                                      
                                                                                                                                    
  Information for thread 8000000000000000                                                                                           
                                                                                                                                    
  Traceback:                                                                                                                        
    DSA   Entry       E  Offset  Statement   Load Mod             Program Unit                   Service  Status                    
    1     CEEKKMRA    +0000081C              CEEPLPKA             CEEKKMRA                       D1908    Call                      
    2     IBMRKDM     +000000C2              IBMREV10             IBMRKDM                                 Call                      
    3     ERR  ON-unit+000000D6  4           SAMPLE               SAMPLE                                  Call                      
    4     IBMRERPL    +0000065A              IBMRLIB1             IBMRERPL                                Call                      
    5     CEEEV010    +0000013A              IBMREV10             CEEEV010                                Call                      
    6     CEEHDSP     +000017D0              CEEPLPKA             CEEHDSP                        D1908    Call                      
    7     SUB1        +000000EE  15          SAMPLE               SAMPLE                                  Exception                 
    8     SAMPLE      +00000154  11          SAMPLE               SAMPLE                                  Call                      
    9     IBMRPMIA    +0000051E              IBMRLIB1             IBMRPMIA                                Call                      
    10    CEEEV010    +00000310              IBMREV10             CEEEV010                                Call                      
    11    CEEBBEXT    +000001B6              CEEPLPKA             CEEBBEXT                       D1908    Call                      
                                                                                                                                    
    DSA   DSA Addr   E  Addr    PU Addr    PU Offset  Comp Date  Compile Attributes                                                 
    1     20B45A68   209F0420   209F0420   +0000081C  20061214   CEL                                                                
    2     00025670   20B1C0A0   20B1C0A0   +000000C2  ********   OS PL/I                                                            
    3     20B45940   2090022C   20900080   +00000282  ********   OS PL/I                                                            
    4     20B45708   00019F50   00019F50   +0000065A  20061213   LIBRARY                                                            
    5     20B45680   20B02998   20B02998   +0000013A  20061213   LIBRARY                                                            
    6     20B42560   209BF068   209BF068   +000017D0  20061215   CEL                                                                
    7     20B42460   20900360   20900080   +000003CE  ********   OS PL/I                                                            
    8     20B42330   20900088   20900080   +0000015C  ********   OS PL/I                                                            
    9     20B42178   000201D0   000201D0   +0000051E  20061214   LIBRARY                                                            
    10    20B420F0   20B02998   20B02998   +00000310  20061213   LIBRARY                                                            
    11    20B42030   2098DDB8   2098DDB8   +000001B6  20061215   CEL                                                                
                                                                                                                                    
  Condition Information for Active Routines                                                                                         
    Condition Information for SAMPLE (DSA address 20B42460)                                                                         
      CIB Address: 20B42E80                                                                                                         
      Current Condition:                                                                                                            
        IBM0281S A prior condition was promoted to the ERROR condition.                                                             
      Original Condition:                                                                                                           
        CEE3209S The system detected a fixed-point divide exception (System Completion Code=0C9).                                   
      Location:                                                                                                                     
        Program Unit: SAMPLE Entry: SUB1 Statement: 15 Offset: +000000EE                                                            
      Machine State:                                                                                                                
        ILC..... 0004    Interruption Code..... 0009   
  PSW..... 078D2E00 A0900452                                                                             
                                                                                      
        GPR0..... 00000000_20B42560  GPR1..... 00000000_20B42538  GPR2..... 00000000_A09003E4  GPR3..... 00000000_209004A8          
        GPR4..... 00000000_2090056C  GPR5..... 00000000_20B42330  GPR6..... 00000000_20B42404  GPR7..... 00000000_00000008          
        GPR8..... 00000000_20B42400  GPR9..... 00000000_00000004  GPR10.... 00000000_20B420B0  GPR11.... 00000000_20B423F8          
        GPR12.... 00000000_2090E9C0  GPR13.... 00000000_20B42460  GPR14.... 00000000_00000000  GPR15.... 00000000_00000003
Figure 5. Language Environment dump from example PL/I for MVS & VM routine (Part 2 of 3)
    Storage dump near condition, beginning at location: 2090043E                                                                    
      +000000 2090043E  5860B000 5F604000 58E76000 8EE00020  5DE08000 50F96000 41E0D0D8 50E0312C  |.-..^- ..X-.....)...&9-....Q&...|
    GPREG STORAGE:                                                                                                                  
      Storage around GPR0 (20B42560)                                                                                                
        -0020 20B42540  20909DB0 A090055C 00409D00 00028004  008FF4E8 2090D658 00010000 00025470  |.......*. ........4Y..O.........|
        +0000 20B42560  0808CEE1 20B42460 20B45680 A09C083A  A0B02998 00000020 2090B2E8 20B42E80  |.......-...........q.......Y....|
        +0020 20B42580  20B42330 209C3C94 FFFFFF20 00000001  00000007 A09C0542 20B4455E 20B4355F  |.......m...................;...^|
⋮
  Control Blocks for Active Routines:                                                                                               
⋮                                                                                                                                   
    DSA for ERR  ON-unit: 20B45940                                                                                                  
      +000000  FLAGS.... CC25      member... 4040      BKC...... 20B45708  FWC...... 40404040  R14...... A0900304                   
      +000010  R15...... A0B1C0A0  R0....... 20B45A68  R1....... 209005A8  R2....... A09002B8  R3....... 209004A8                   
      +000024  R4....... 00000064  R5....... 00000000  R6....... 20B459F8  R7....... 20B457F0  R8....... 20B45A30                   
      +000038  R9....... 20B45A60  R10...... 00000000  R11...... 0001AF4F  R12...... D6D940C7  reserved. 00025670                   
      +00004C  NAB...... 20B45A68  PNAB..... 20B45A68  reserved. 91E091E0  20900650                                                 
      +000064  reserved. 40404040  reserved. 40404040  MODE..... 40404040  reserved. 20B459F8                                       
      +000078  reserved. 40404040  reserved. 40404040                                                                               
    Dynamic save area (ERR  ON-unit): 20B45940                                                                                      
      +000000 20B45940  CC254040 20B45708 40404040 A0900304  A0B1C0A0 20B45A68 209005A8 A09002B8  |..  ....    ..........!....y....|
      +000020 20B45960  209004A8 00000064 00000000 20B459F8  20B457F0 20B45A30 20B45A60 00000000  |...y...........8...0..!...!-....|
      +000040 20B45980  0001AF4F D6D940C7 00025670 20B45A68  20B45A68 91E091E0 20B42330 20900650  |...|OR G......!...!.j.j........&|
      +000060 20B459A0  40404040 40404040 40404040 40404040  20B459F8 40400240 40404040 40404040  |                ...8  .         |
      +000080 20B459C0  20B42E80 00025470 A0B1120A A0B11190  20B42560 20B457D8 00025470 A0B11190  |...................-...Q........|
      +0000A0 20B459E0  209C3C94 20B42E80 00025470 20B42E80  2090E880 00016038 0C010027 20B1218F  |...m..............Y...-.........|
      +0000C0 20B45A00  2090E9C0 40404040 40404040 40404040  40404040 40404040 40404040 40404040  |..Z.                            |
      +0000E0 20B45A20  40404040 40404040 40404040 40404040  E3C2C340 20B45A30 00030000 D7D3C9C4  |                TBC ..!.....PLID|
      +000100 20B45A40  E4D4D740 83819393 85844086 99969440  85999996 9940D6D5 60A49589 A32C0000  |UMP called from error ON-unit...|
      +000120 20B45A60  20B45A3C 00210000 0000F3C3 00025670  20B45F60 A09F0C3E A09EB5B8 00000000  |..!.......3C......^-............|
    Static for procedure SAMPLE    Timestamp: 27 FEB 07  13:57:59                                                                   
    Starting from: 209004A8                                                                                                         
      +000000 209004A8  E0000354 20900088 20900130 20900166  2090022C 209002B8 20900360 209003E4  |.......h...................-...U|
      +000020 209004C8  209003E4 209003E4 209003E4 20900C78  20900C60 20900C48 20900C30 20900C18  |...U...U...U.......-............|
      +000040 209004E8  20900C00 20901BF8 20901BE0 20900BE8  20901BC8 20901BB0 20900BD0 20900BB8  |.......8.......Y...H............|
      +000060 20900508  B4000A00 20000002 1F800000 00000000  209005DC 000F0000 00000000 000D0000  |................................|
      +000080 20900528  00000000 2090056C 209005F8 000D0000  00000000 00030000 00000000 00210000  |.......%...8....................|
      +0000A0 20900548  20900629 000D0000 20900636 000B0000  91E091E0 00000001 00000003 00000005  |................j.j.............|
      +0000C0 20900568  00000000 00000004 00000004 00000003  00000001 00000002 20900838 20900838  |................................|
      +0000E0 20900588  20B42438 A090055C 20B42400 20B423F0  A0B423F8 20900838 00000000 A090055C  |.......*.......0...8...........*|
      +000100 209005A8  20B45A34 A0B45A60 20900BA0 20900838  80000000 00000000 A0900658 20900838  |..!...!-........................|
      +000120 209005C8  20B42538 A090055C 20900838 00000000  A090055C E2819497 938540E2 A38199A3  |.......*...........*Sample Start|
      +000140 209005E8  899587E3 8599A840 C7899393 81A297A8  E2819497 938540C5 95848995 87E3C2C3  |ingTery GillaspySample EndingTBC|
      +000160 20900608  D7D3C9C4 E4D4D740 83819393 85844086  99969440 85999996 9940D6D5 60A49589  |PLIDUMP called from error ON-uni|
      +000180 20900628  A3E2A482 F140E2A3 8199A389 9587E2A4  82F140C5 95848995 87000000 00000000  |tSub1 StartingSub1 Ending.......|
      +0001A0 20900648  0C160000 2090022C 0C960000 00000000  2090066C 20900688 209006A4 00000000  |.........o.........%...h...u....|
      +0001C0 20900668  00000000 85000001 2090050E 000000D0  00000000 0008C16D D5E4D4C2 C5D90000  |....e.................A_NUMBER..|
      +0001E0 20900688  81000001 2090050C 000000C0 00000000  0007D4E8 6DD5C1D4 C5000000 81000101  |a.................MY_NAME...a...|
      +000200 209006A8  2090050E 000000C8 00000000 0008C1D5  6DC1D9D9 C1E80000 20900818 00000000  |.......H......AN_ARRAY..........|
      +000220 209006C8  00000000 2090066C 20900688 209006A4  20900750 20900858 00000000 209006C0  |.......%...h...u...&............|
      +000240 209006E8  00000000 209006CC 20900704 20900720  20900738 00000000 209006CC A5000002  |............................v...|
      +000260 20900708  2090050E 000000C0 00000000 0007C4C9  E5C9E2D6 D9000000 A1000002 2090050C  |..............DIVISOR...........|
      +000280 20900728  000000C4 00000000 0005D5C1 D4C5F100  A1000102 2090050E 000000C8 00000000  |...D......NAME1............H....|
      +0002A0 20900748  0006C1D9 D9C1E8F1 0D020001 20900508  20900360 00000000 0004E2E4 C2F10000  |..ARRAY1...........-......SUB1..|
      +0002C0 20900768  00000001 20900088 000001A4 2090079C  00000001 00DF0002 00E30008 01210009  |.......h...u.............T......|
      +0002E0 20900788  0129000A 012F000B 01570012 01950013  01A40002 2090022C 0000012A 209007C0  |.............n...u..............|
      +000300 209007A8  00000002 008D0003 00910004 00D90005  011B0006 012C000C 20900360 00000144  |.........j...R.............-....|
      +000320 209007C8  209007E4 0000000C 0085000E 00C3000F  00F70010 01350011 01340011 0E0E0E0E  |...U.....e...C...7..............|
      +000340 209007E8  F2F740C6 C5C240F0 F74040F1 F37AF5F7  7AF5F940 80000117 20900000 00000000  |27 FEB 07  13:57:59 ............|
⋮                                                                                                                                    
    DSA for CEEHDSP: 20B42560                                                                                                       
      +000000  FLAGS.... 0808      member... CEE1      BKC...... 20B42460  FWC...... 20B45680  R14...... A09C083A                   
      +000010  R15...... A0B02998  R0....... 00000020  R1....... 2090B2E8  R2....... 20B42E80  R3....... 20B42330                   
      +000024  R4....... 209C3C94  R5....... FFFFFF20  R6....... 00000001  R7....... 00000007  R8....... A09C0542                   
      +000038  R9....... 20B4455E  R10...... 20B4355F  R11...... 209BF068  R12...... 2090E9C0  reserved. 00025670                   
      +00004C  NAB...... 20B45680  PNAB..... 00000000  reserved. 20B424F0  20B424F0                                                 
      +000064  reserved. A0AF2F14  reserved. 00010280  MODE..... 000272F0  reserved. 20B4269C                                       
      +000078  reserved. 20B42598  reserved. 20900838                                                                               
    DSA for SUB1: 20B42460                                                                                                          
      +000000  FLAGS.... 8025      member... 0000      BKC...... 20B42330  FWC...... 00000000  R14...... A0900452                   
      +000010  R15...... 00000003  R0....... 20B42560  R1....... 20B42538  R2....... A09003E4  R3....... 209004A8                   
      +000024  R4....... 2090056C  R5....... 20B42330  R6....... 20B42404  R7....... 00000008  R8....... 20B42400                   
      +000038  R9....... 00000004  R10...... 20B420B0  R11...... 20B423F8  R12...... 2090E9C0  reserved. 00025290                   
      +00004C  NAB...... 20B42560  PNAB..... 20B42560  reserved. 91E091E0  00000800                                                 
      +000064  reserved. 20B420F0  reserved. A0B02998  MODE..... 20900B78  reserved. 2090E880                                       
      +000078  reserved. 00000000  reserved. 00000000
Figure 6. Language Environment dump from example PL/I for MVS & VM routine (Part 3 of 3)
    CIB for SUB1: 20B42E80                                                                                                          
      +000000 20B42E80  C3C9C240 00000000 00000000 010C0004  00000000 00000000 00030119 59C9C2D4  |CIB .........................IBM|
      +000020 20B42EA0  00000000 20B42F90 00030C89 59C3C5C5  00000001 00000005 20B42330 A0B02998  |...........i.CEE...............q|
      +000040 20B42EC0  00000000 20B42460 20900452 2090B6F0  0000000A 20B42460 00000000 00000000  |.......-.......0.......-........|
      +000060 20B42EE0  00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000  |................................|
      +000080 20B42F00 - +00009F 20B42F1F             same as above                                                                 
      +0000A0 20B42F20  00000000 00000000 00000000 00000000  44230000 940C9000 00000009 00000000  |....................m...........|
      +0000C0 20B42F40  00000000 00000000 20B42460 20B42460  2090044E 00000000 00000000 00000001  |...........-...-...+............|
      +0000E0 20B42F60  20B42330 0000000A 00000064 00000000  FFFFFFFC 00000000 00000000 00000000  |................................|
      +000100 20B42F80  00000000 2090B908 00000000 00000000  E9D4C3C8 02000001 20B42560 20B42538  |................ZMCH.......-....|

    Dynamic save area (SUB1): 20B42460                                                                                              
      +000000 20B42460  80250000 20B42330 00000000 A0900452  00000003 20B42560 20B42538 A09003E4  |.......................-.......U|
      +000020 20B42480  209004A8 2090056C 20B42330 20B42404  00000008 20B42400 00000004 20B420B0  |...y...%........................|
      +000040 20B424A0  20B423F8 2090E9C0 00025290 20B42560  20B42560 91E091E0 20B42330 00000800  |...8..Z........-...-j.j.........|
      +000060 20B424C0  20B420F0 20B420F0 A0B02998 20900B78  2090E880 0000020A 00000000 00000000  |...0...0...q......Y.............|
      +000080 20B424E0  20AF2CD6 C9C2D4D9 D6D7C1C1 209005DC  000F0000 00027258 20B425B8 A0B2C18E  |...OIBMROPAA..................A.|
      +0000A0 20B42500  A0AF24D0 000272F0 20B42570 000272F0  A0B2C0F0 20900838 00000001 2090D1A8  |.......0.......0...0..........Jy|
      +0000C0 20B42520  20B42400 20B423F0 20B423F8 00000001  20B42538 20B420B0 20900548 2090050C  |.......0...8....................|
      +0000E0 20B42540  20909DB0 A090055C 00409D00 00028004  008FF4E8 2090D658 00010000 00025470  |.......*. ........4Y..O.........|
    DSA for SAMPLE: 20B42330                                                                                                        
      +000000  FLAGS.... C025      member... 0000      BKC...... 20B42178  FWC...... 00000000  R14...... A09001DE                   
      +000010  R15...... 20900360  R0....... 20B42460  R1....... 20900590  R2....... A0900166  R3....... 209004A8                   
      +000024  R4....... 00000005  R5....... 20B42330  R6....... 20B42408  R7....... 20B423F8  R8....... 00000001                   
      +000038  R9....... 00000008  R10...... 20B420B0  R11...... 2090080C  R12...... 2090E9C0  reserved. 00025290                   
      +00004C  NAB...... 20B42460  PNAB..... 20B42460  reserved. 91E091E0  20900648                                                 
      +000064  reserved. 00000000  reserved. 00000000  MODE..... 00000000  reserved. 20B423E8                                       
      +000078  reserved. 00000000  reserved. 00000000                                                                               
    Dynamic save area (SAMPLE): 20B42330                                                                                            
      +000000 20B42330  C0250000 20B42178 00000000 A09001DE  20900360 20B42460 20900590 A0900166  |...................-...-........|
      +000020 20B42350  209004A8 00000005 20B42330 20B42408  20B423F8 00000001 00000008 20B420B0  |...y...............8............|
      +000040 20B42370  2090080C 2090E9C0 00025290 20B42460  20B42460 91E091E0 00000000 20900648  |......Z........-...-j.j.........|
      +000060 20B42390  00000000 00000000 00000000 00000000  20B423E8 00000200 00000000 00000000  |...................Y............|
      +000080 20B423B0  20B42124 20B42128 20B4212C 20B42130  20B42138 20B42134 20B4213C 00000000  |................................|
      +0000A0 20B423D0  00000000 00000000 00000000 00000000  00000000 00000000 0C010000 00000000  |................................|
      +0000C0 20B423F0  20B42414 000D0000 20B42408 2090056C  00000000 00000000 00000001 00000003  |...............%................|
      +0000E0 20B42410  00000005 E38599A8 40C78993 9381A297  A8000000 00000000 00000000 00000000  |....Tery Gillaspy...............|
      +000100 20B42430  20B42438 00000000 20900518 2090050C  00000000 A090055C 00400000 00028004  |.......................*. ......|
      +000120 20B42450  00000000 00000000 00010000 00025470  80250000 20B42330 00000000 A0900452  |................................|
⋮

To understand the dump information and debug this routine, use the following steps:

  1. Notice the title of the dump: PLIDUMP called from error ON-unit. This was the title specified when PLIDUMP was invoked, and it indicates that the ERROR condition was raised and PLIDUMP was called from within the ERROR ON-unit.
  2. Locate the messages in the Condition Information section of the dump.

    There are two messages. The current condition message indicates that a prior condition was promoted to the ERROR condition. The promotion of a condition occurs when the original condition is left unhandled (no PL/I for MVS & VM ON-units are assigned to gain control). The original condition message is CEE3209S. The system detected a Fixed Point divide exception. The original condition usually indicates the actual problem. For more information about this message, see z/OS Language Environment Runtime Messages.

  3. In the traceback section, note the sequence of calls in the call chain. SAMPLE called SUB1 at statement 11, and SUB1 raised an exception at statement 15, PU offset X'3CE'.
  4. Find the statement in the listing for SUB1 that raised the ZERODIVIDE condition. If SUB1 was compiled with GOSTMT and SOURCE, find statement 15 in the source listing.

    Since the object listing was generated in this example, you can also locate the actual assembler instruction causing the exception at offset X'3CE' in the object listing for this routine, shown in Figure 3. Either method shows that divisor was used as the divisor in a divide operation.

  5. You can see from the declaration of SUB1 that divisor is a parameter passed from SAMPLE. Because of linkage conventions, you can infer that register 1 in the SAMPLE save area points to a parameter list that was passed to SUB1. divisor is the first parameter in the list.
  6. In the SAMPLE DSA, the R1 value is X'20900590'. This is the address of the parameter list, which is located in static storage.
  7. Find the parameter list in the stack frame; the address of the first parameter is X'20B42400' and the value of the first parameter is X'00000000'. Thus, the exception occurred when SAMPLE passed a 0 value used as a divisor in subroutine SUB1.