Usage considerations for SDUMP

Examples of calling SDUMP from the main program and from a subprogram follow. Figure 1 shows a sample program calling SDUMP and Figure 3 shows the resulting output that is generated. In the main program, the following statement
EXTERNAL PGM1,PGM2,PGM3
makes the address of subprograms PGM1, PGM2, and PGM3 available for a call to SDUMP, as follows:
CALL SDUMP (PGM1,PGM2,PGM3)

This causes variables in PGM1, PGM2, and PGM3 to be printed.

In the subprogram PGM1, the following statement makes PGM2 and PGM3 available. (PGM1 is missing because the call is in PGM1.)
EXTERNAL PGM2,PGM3
The following statements dump the variables PGM1, PGM2, and PGM3.
CALL SDUMP
CALL SDUMP (PGM2,PGM3)
Figure 1. Example program that calls SDUMP
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#)
 IF DO   ISN   *....*...1.........2.........3.........4.........5.........6.........7.*.......8
           1         PROGRAM FORTMAIN
           2         EXTERNAL PGM1,PGM2,PGM3
           3         INTEGER*4 ANY_INT
           4         INTEGER*4 INT_ARR(3)
           5         CHARACTER*20 CHAR_VAR
           6         ANY_INT = 555
           7         INT_ARR(1) = 1111
           8         INT_ARR(2) = 2222
           9         INT_ARR(3) = 2222
          10         CHAR_VAR = 'SAMPLE CONSTANT '
          11         CALL PGM1(ANY_INT,CHAR_VAR)
          12         CALL SDUMP(PGM1,PGM2,PGM3)
          13         STOP
          14         END
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#)
 IF DO   ISN   *....*...1.........2.........3.........4.........5.........6.........7.*.......8
           1         SUBROUTINE PGM1(ARG1,ARG2)
           2         EXTERNAL PGM2,PGM3
           3         INTEGER*4 ARG1
           4         CHARACTER*20 ARG2
           5         ARG1 = 1
           6         ARG2 = 'ARGUMENT'
           7         CALL PGM2
           8         CALL SDUMP
           9         CALL SDUMP(PGM2,PGM3)
          10         RETURN
          11         END
Figure 2. Example program that calls SDUMP (continued)
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#)
 IF DO   ISN   *....*...1.........2.........3.........4.........5.........6.........7.*.......8
           1         SUBROUTINE PGM2
           2         INTEGER*4 PGM2VAR
           3         PGM2VAR = 555
           4         CALL PGM3
           5         RETURN
           6         END
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#)
 IF DO   ISN   *....*...1.........2.........3.........4.........5.........6.........7.*.......8
           1         SUBROUTINE PGM3
           2         CHARACTER*20 PGM3VAR
           3         PGM3VAR = 'PGM3 VAR'
           4         RETURN
           5         END

Figure 3 shows the resulting output generated by the example in Figure 1.

Figure 3. Language Environment dump generated using SDUMP
Parameters, Registers, and Variables for Active Routines:
PGM1      (DSA address 06D004C8):
Parameters:
  ARG2             CHARACTER*20     ARGUMENT

  ARG1             INTEGER*4                  1
Local Variables:
Parameters, Registers, and Variables for Active Routines:
PGM2      (DSA address 000930FC):
Parameters:
Local Variables:
  PGM2VAR          INTEGER*4                555
Parameters, Registers, and Variables for Active Routines:
PGM3      (DSA address 000930FC):
Parameters:
Local Variables:
  PGM3VAR          CHARACTER*20     PGM3 VAR

Parameters, Registers, and Variables for Active Routines:
PGM1      (DSA address 000930FC):
Parameters:
  ARG2             CHARACTER*20     ARGUMENT

  ARG1             INTEGER*4                  1
Local Variables:
Parameters, Registers, and Variables for Active Routines:
PGM2      (DSA address 000930FC):
Parameters:
Local Variables:
  PGM2VAR          INTEGER*4                555
Parameters, Registers, and Variables for Active Routines:
PGM3      (DSA address 000930FC):
Parameters:
Local Variables:
  PGM3VAR          CHARACTER*20     PGM3 VAR