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.
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.
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.
* 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.
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
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
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:
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.
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.