Calling a nonexistent routine

Figure 1 illustrates an error caused by calling a nonexistent routine. The options in effect at compile time appear at the top of the listing.

Figure 1. Example of calling a nonexistent routine
OPTIONS IN EFFECT: LIST NOMAP NOXREF NOGOSTMT NODECK SOURCE TERM OBJECT FIXED TRMFLG SRCFLG NODDIM NORENT SDUMP(ISN)
                   NOSXM NOVECTOR IL(DIM) NOTEST SC(*) NODC NOEC NOEMODE NOICA NODIRECTIVE NODBCS NOSAA NOPARALLEL NODYNAMIC NOSYM
                   NOREORDER NOPC
                   OPT(0) LANGLVL(77) NOFIPS FLAG(I) HALT(S) AUTODBL(NONE) PTRSIZE(8) LINECOUNT(60) CHARLEN(500) NAME(MAIN#)
           1         PROGRAM CALLNON
           2         INTEGER*4 ARRAY_END
               C
           3         CALL SUBNAM
           4         STOP
           5         END

Figure 2 shows sections of the dump generated by a call to SDUMP.

Figure 2. Sections of the Language Environment dump resulting from a call to a nonexistent routine
CEE3DMP V1 R3.0: Condition processing resulted in the unhandled condition.         08/30/01 10:33:01 AM                 Page:    1

Information for enclave CALLNON

  Information for thread 8000000000000000

  Traceback:
    DSA Addr  Program Unit  PU Addr   PU Offset  Entry         E Addr    E  Offset   Statement  Load Mod  Service  Status
    0002D018  CEEHDSP       05936760  +0000277C  CEEHDSP       05936760  +0000277C              CEEPLPKA           Call
    05900C10  CALLNON       05900B28  -05900B26  CALLNON       05900B28  -05900B26       3_ISN  GO                 Exception

  Condition Information for Active Routines
    Condition Information for CALLNON   (DSA address 05900C10)
      CIB Address: 0002D468
      Current Condition:
        CEE3201S The system detected an operation exception.
      Location:
        Program Unit: CALLNON
        Entry:        CALLNON
        Statement:    3_ISN Offset: -05900B26
      Machine State:
        ILC..... 0002    Interruption Code..... 0001
        PSW..... 078D3D00 80000004
        GPR0..... FD000008  GPR1..... 00000000  GPR2..... 05900D04  GPR3..... 05900C10
        GPR4..... 007F6930  GPR5..... 007FD238  GPR6..... 007BFFF8  GPR7..... FD000000
        GPR8..... 007FD968  GPR9..... 807FD4F8  GPR10.... 00000000  GPR11.... 007FD238
        GPR12.... 00E21ED2  GPR13.... 05900C10  GPR14.... 85900CE8  GPR15.... 00000000
    Storage dump near condition, beginning at location: 00000000
      +000000 00000000  Inaccessible storage.

  Parameters, Registers, and Variables for Active Routines:
    CEEHDSP (DSA address 0002D018):
      Saved Registers:
        GPR0..... 00000000  GPR1..... 0002D3B4  GPR2..... 0002DFD7  GPR3..... 0002E027
        GPR4..... 0002DF94  GPR5..... 00000000  GPR6..... 00000004  GPR7..... 00000000
        GPR8..... 0002E017  GPR9..... 0593875E  GPR10.... 0593775F  GPR11.... 05936760
        GPR12.... 00014770  GPR13.... 0002D018  GPR14.... 800250DE  GPR15.... 85949C70

  GPREG STORAGE:
    Storage around GPR0 (00000000)
      +000000 00000000  Inaccessible storage.
      +000020 00000020  Inaccessible storage.
      +000040 00000040  Inaccessible storage.
    Storage around GPR1 (0002D3B4)
     -000020 0002D394  00000006 00000000 0002E017 0593875E  0593775F 05936760 00014770 00000000  |.............lg;.l.¬.l.-........|
     +000000 0002D3B4  0002DFD7 0002E027 0002DF94 0002DF94  0002DDF4 0002DEC4 0002E158 00000000  |...P.......m...m...4...D........|
     +000020 0002D3D4  0002D468 00000000 00000000 00000007  859D67E0 00000000 00000000 05914848  |..M.............e............j..|
       ⋮
CEE3DMP V1 R3.0: Condition processing resulted in the unhandled condition.         08/30/01 10:33:01 AM                 Page:    4

  File Status and Attributes:
    The total number of units defined is 100.
    The default unit for the PUNCH statement is 7.
    The default unit for the Fortran error messages is 6.
    The default unit for formatted sequential output is 6.
    The default unit for formatted sequential input is 5.

To understand the traceback section, and debug this example routine, do the following:

  1. Find the Current® Condition information in the Condition Information for Active Routines section of the dump. The message is CEE3201S. The system detected an operation exception at statement 3. 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.
  2. Locate statement 3 in the routine shown in Figure 1. This statement calls subroutine SUBNAM. The message CEE3201S in the Condition Information section of the dump indicates that the operation exception was generated because of an unresolved external reference.
  3. Check the linkage editor output for error messages.