Calling a nonexistent subroutine

Figure 1 demonstrates the error of calling a nonexistent subroutine. This routine was compiled with the LIST, MAP, and GOSTMT compiler options. It was run with the TERMTHDACT(DUMP) runtime option to generate a traceback.

Figure 1. Example of calling a nonexistent subroutine
5688-235 IBM PL/I for MVS & VM          Ver 1 Rel 1 Mod 1                              27 FEB 07   11:45:18     PAGE   1            
OPTIONS SPECIFIED                                                                                                                   
*PROCESS  GOSTMT LIST S STG TEST MAP NOOPTIONS;                                                                                     
5688-235 IBM PL/I for MVS & VM          EXAMPLE1:  PROC  OPTIONS(MAIN);                                         PAGE   2            
                    SOURCE LISTING                                                                                                  
    STMT                                                                                                                            
                                                                                                                                    
       1  EXAMPLE1:  PROC  OPTIONS(MAIN);                                                                                           
                                                                                                                                    
       2      DCL Prog01 entry external;                                                                                            
                                                                                                                                    
       3      On error                                                                                                              
                Begin;                                                                                                              
       4          On error system;                                                                                                  
       5          Call plidump('tbnfs','Plidump called from error On-unit');                                                        
       6        End;                                                                                                                
                                                                                                                                    
       7      Call prog01;        /* Call enternal program PROG01 */                                                                
                                                                                                                                    
       8   End Example1;                                                                                                            
5688-235 IBM PL/I for MVS & VM          EXAMPLE1:  PROC  OPTIONS(MAIN);                                         PAGE   3            
                    STORAGE REQUIREMENTS                                                                                            
BLOCK, SECTION OR STATEMENT     TYPE                  LENGTH   (HEX)    DSA SIZE   (HEX)                                            
EXAMLE11                        PROGRAM CSECT            444     1BC                                                                
EXAMLE12                        STATIC CSECT             292     124                                                                
EXAMPLE1                        PROCEDURE BLOCK          210      D2         192      C0                                            
BLOCK 2      STMT 3             ON UNIT                  232      E8         256     100                                            
5688-235 IBM PL/I for MVS & VM          EXAMPLE1:  PROC  OPTIONS(MAIN);                                         PAGE   4            
                          STATIC INTERNAL STORAGE MAP                                                    

Figure 2 shows the traceback and condition information from the dump.

Figure 2. Sections of the Language Environment dump (Part 1 of 2)
CEE3DMP V1 R12.0: Plidump called from error On-unit                            04/10/10 11:45:20 AM            Page:    1            
ASID: 00B5   Job ID: JOB21952   Job name: LEDGSMP2   Step name: GO         UserID: HEALY                                            
                                                                                                                                    
CEE3845I CEEDUMP Processing started.                                                                                                
PLIDUMP was called from statement number 5 at offset +000000D6 from ERR  ON-unit with entry address 20900DF4                        
                                                                                                                                    
Information for enclave EXAMPLE1                                                                                                    
                                                                                                                                    
  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  5           EXAMPLE1             EXAMPLE1                                Call                      
    4     IBMRERPL    +0000065A              IBMRLIB1             IBMRERPL                                Call                      
    5     CEEEV010    +0000013A              IBMREV10             CEEEV010                                Call                      
    6     CEEHDSP     +000017D0              CEEPLPKA             CEEHDSP                        D1908    Call                      
    7     EXAMPLE1    -20900D2C              EXAMPLE1             EXAMPLE1                                Exception                 
    8     IBMRPMIA    +0000051E              IBMRLIB1             IBMRPMIA                                Call                      
    9     CEEEV010    +00000310              IBMREV10             CEEEV010                                Call                      
    10    CEEBBEXT    +000001B6              CEEPLPKA             CEEBBEXT                       D1908    Call                      
                                                                                                                                    
    DSA   DSA Addr   E  Addr    PU Addr    PU Offset  Comp Date  Compile Attributes                                                 
    1     20B458D0   209F0420   209F0420   +0000081C  20061214   CEL                                                                
    2     00025670   20B1C0A0   20B1C0A0   +000000C2  ********   OS PL/I                                                            
    3     20B457D0   20900DF4   20900D20   +000001AA  ********   OS PL/I                                                            
    4     20B45598   00019F50   00019F50   +0000065A  20061213   LIBRARY                                                            
    5     20B45510   20B02998   20B02998   +0000013A  20061213   LIBRARY                                                            
    6     20B423F0   209BF068   209BF068   +000017D0  20061215   CEL                                                                
    7     20B42330   20900D2C   20900D20   -20900D20  ********   OS PL/I                                                            
    8     20B42178   000201D0   000201D0   +0000051E  20061214   LIBRARY                                                            
    9     20B420F0   20B02998   20B02998   +00000310  20061213   LIBRARY                                                            
    10    20B42030   2098DDB8   2098DDB8   +000001B6  20061215   CEL                                                                
                                                                                                                                    
  Condition Information for Active Routines                                                                                         
    Condition Information for EXAMPLE1 (DSA address 20B42330)                                                                       
      CIB Address: 20B42D10                                                                                                         
      Current Condition:                                                                                                            
        CEE3201S The system detected an operation exception (System Completion Code=0C1).                                           
      Location:                                                                                                                     
        Program Unit: EXAMPLE1 Entry: EXAMPLE1 Statement:  Offset: -20900D2C                                                        
        Possible Bad Branch:  Statement: 7  Offset: +000000C0                                                                       
      Machine State:                                                                                                                
        ILC..... 0002    Interruption Code..... 0001                                                                                
        PSW..... 078D0E00 80000002                                                                                            
        GPR0..... 00000000_20B423F0  GPR1..... 00000000_00000000  GPR2..... 00000000_A0900DD4  GPR3..... 00000000_20900EE0  
        GPR4..... 00000000_00000001  GPR5..... 00000000_00000000  GPR6..... 00000000_20B423E8  GPR7..... 00000000_00000005      
        GPR8..... 00000000_20900F50  GPR9..... 00000000_00000008  GPR10.... 00000000_20B420B0  GPR11.... 00000000_2090100C  
        GPR12.... 00000000_2090E9C0  GPR13.... 00000000_20B42330  GPR14.... 00000000_A0900DE2  GPR15.... 00000000_00000000 
  Storage dump near condition, beginning at location: 00000000                                                                    
    +000000 00000000  Inaccessible storage.                                                                                       
  GPREG STORAGE:                                                                                                                  
    Storage around GPR0 (20B423F0)                                                                                                
      -0020 20B423D0  00000000 00000000 00000000 00000000  00000000 00000000 0C010000 00000000 |................................|
      +0000 20B423F0  0808CEE1 20B42330 20B45510 A09C083A  A0B02998 00000020 2090B2E8 20B42D10 |...................q.......Y....|
      +0020 20B42410  20B42330 209C3C94 FFFFFF20 00000001  00000007 A09C0542 20B443EE 20B433EF |.......m........................|
    Storage around GPR1 (00000000)                                                                                                
      +0000 00000000    Inaccessible storage.                                                                                     
      +0020 00000020    Inaccessible storage.                                                                                     
      +0040 00000040    Inaccessible storage.                                                                                     
    Storage around GPR2 (20900DD4)                                                                                                
      -0020 20900DB4  92C01000 92251001 92021076 41D10000  41803070 5080D05C D203D054 30300520 |k...k...k....J......&..*K.......|
      +0000 20900DD4  920CD0B8 1B111B55 58F03040 05EF180D  58D0D004 58E0D00C 982CD01C 051E0707 |k........0. ............q.......|
      +0020 20900DF4  90ECD00C 47F0F02C 20900FC4 00000100  20900EE0 20900F78 20900D58 10000000 |.....00....D....................|
    Storage around GPR3 (20900EE0)                                                                                                
      -0020 20900EC0  1B554110 303458F0 303C05EF 180D58D0  D00458E0 D00C982C D01C051E 00000000 |.......0..............q.........|
      +0000 20900EE0  E000011C 20900D2C 20900DD4 20900DF4  20900E80 20900E80 20900E80 20900E80 |...........M...4................|
      +0020 20900F00  00000000 00050000 00000000 00210000  91E091E0 20B45898 A0B458C4 20901368 |................j.j....q...D....|
    Storage around GPR4 (00000001)                                                                                                
      -0001 00000000    Inaccessible storage.                                                                                     
      +001F 00000020    Inaccessible storage.                                                                                     
      +003F 00000040    Inaccessible storage.                                                                                     
Figure 3. Sections of the Language Environment dump (Part 2 of 2)
  Storage around GPR5 (00000000)                                                                                                
    +0000 00000000    Inaccessible storage.                                                                                     
    +0020 00000020    Inaccessible storage.                                                                                     
    +0040 00000040    Inaccessible storage.                                                                                     
  Storage around GPR6 (20B423E8)                                                                                                
    -0020 20B423C8  20B4213C 00000000 00000000 00000000  00000000 00000000 00000000 00000000 |................................|
    +0000 20B423E8  0C010000 00000000 0808CEE1 20B42330  20B45510 A09C083A A0B02998 00000020 |...........................q....|
    +0020 20B42408  2090B2E8 20B42D10 20B42330 209C3C94  FFFFFF20 00000001 00000007 A09C0542 |...Y...........m................|
  Storage around GPR7 (00000005)                                                                                                
    -0005 00000000    Inaccessible storage.                                                                                     
    +001B 00000020    Inaccessible storage.                                                                                     
    +003B 00000040    Inaccessible storage.                                                                                     
  Storage around GPR8 (20900F50)                                                                                                
    -0020 20900F30  40838193 93858440 86999694 40859999  969940D6 9560A495 89A30000 00000000 | called from error On-unit......|
    +0000 20900F50  0C160000 20900DF4 0C960000 00000000  20901038 00000000 00000000 20901018 |.......4.o......................|
    +0020 20900F70  00000000 20900F60 00000000 20900F6C  20900F20 00000001 00000000 00000000 |.......-.......%................|
  Storage around GPR9 (00000008)                                                                                                
    -0008 00000000    Inaccessible storage.                                                                                     
    +0018 00000020    Inaccessible storage.                                                                                     
    +0038 00000040    Inaccessible storage.                                                                                     
  Storage around GPR10(20B420B0)                                                                                                
    -0020 20B42090  00000000 00000000 00000000 00000000  00000000 00000000 00000000 00000000 |................................|
    +0000 20B420B0  2098E080 2090100C 20B420E0 2090D790  20B420D0 20B420D8 20B420D4 00000000 |.q............P........Q...M....|
    +0020 20B420D0  2090D778 00000000 00000000 00000000  00000001 00000000 00000000 00000000 |..P.............................|
  Storage around GPR11(2090100C)                                                                                                
    -0020 20900FEC  C5C240F0 F74040F1 F17AF4F5 7AF1F840  80000117 20900CA0 00000000 01000001 |EB 07  11:45:18 ................|
    +0000 2090100C  20900D2C 20901340 00000000 1D020001  20901030 00000000 00000000 0006D7D9 |....... ......................PR|
    +0020 2090102C  D6C7F0F1 B4000A00 00000000 1D020000  20901054 20900D2C 00000000 0008C5E7 |OG01..........................EX|
  Storage around GPR12(2090E9C0)                                                                                                
    -0020 2090E9A0  00000000 00000000 C3C5C5C3 C1C14040  00000000 E9E3C3C1 000058C0 D0640CCC |........CEECAA  ....ZTCA........|
    +0000 2090E9C0  00000000 00025658 20B42018 20B62018  00000000 2090E9D0 00000000 000251B0 |......................Z.........|
    +0020 2090E9E0  00000000 00000000 00025030 00000000  00025240 00000000 00025208 00000000 |..........&........ ............|
  Storage around GPR13(20B42330)                                                                                                
    -0020 20B42310  00000000 00000000 00000000 0000000E  0E000000 00000000 00000000 00000000 |................................|
    +0000 20B42330  C0250000 20B42178 00000000 80000002  00000000 20B423F0 00000000 A0900DD4 |.......................0.......M|
    +0020 20B42350  20900EE0 00000001 00000000 20B423E8  00000005 20900F50 00000008 20B420B0 |...............Y.......&........|
  Storage around GPR14(20900DE2)                                                                                                
    -0020 20900DC2  00004180 30705080 D05CD203 D0543030  0520920C D0B81B11 1B5558F0 304005EF |......&..*K.......k........0. ..|
    +0000 20900DE2  180D58D0 D00458E0 D00C982C D01C051E  070790EC D00C47F0 F02C2090 0FC40000 |..........q............00....D..|
    +0020 20900E02  01002090 0EE02090 0F782090 0D581000  00000002 02000000 00000000 00005830 |................................|
  Storage around GPR15(00000000)                                                                                                
    +0000 00000000    Inaccessible storage.                                                                                     
    +0020 00000020    Inaccessible storage.                                                                                     
    +0040 00000040    Inaccessible storage.                                                                                     
⋮

To understand the traceback and debug this example routine, use the following steps:

  1. Find the Current® Condition message in the Condition Information for Active Routines section of the dump. The message is CEE3201S. The system detected an Operation exception. For more information about this message, see z/OS Language Environment Runtime Messages.

    This section of the dump also provides such information as the name of the active routine and the current statement number at the time of the dump. The Location section indicates that the exception occurred at offset X'-20900D2C' within entry EXAMPLE1 and that there might have been a bad branch from offset X'+000000C0' statement 7 within entry EXAMPLE1 .

  2. Locate statement 7 in the routine (Figure 1). This statement calls subroutine Prog01. The message CEE3201S, which indicates an operations exception, was generated because of an unresolved external reference.
  3. Check the linkage editor output for error messages.