Fortran Programming Guide

Some Examples of --Xlist and Global Program Checking

Here is a listing of the Repeat.f source code used in the following examples:


demo% cat Repeat.f
       PROGRAM repeat
         pn1 = REAL( LOC ( rp1 ) )
         CALL subr1 ( pn1 )
         CALL nwfrk ( pn1 )
         PRINT *, pn1
       END ! PROGRAM repeat

       SUBROUTINE subr1 ( x )
         IF ( x .GT. 1.0 ) THEN
          CALL subr1 ( x * 0.5 )
         END IF
       END

       SUBROUTINE nwfrk( ix )
         EXTERNAL fork
         INTEGER prnok, fork
         PRINT *, prnok ( ix ), fork ( )
       END

       INTEGER FUNCTION prnok ( x )
         prnok = INT ( x ) + LOC(x)
       END

       SUBROUTINE unreach_sub()
         CALL sleep(1)
       END

Example: Use -XlistE to show errors and warnings:


demo% f77 -XlistE -silent Repeat.f
demo% cat Repeat.lst
FILE  "Repeat.f"
program  repeat
     4             CALL nwfrk ( pn1 )
                                  ^
**** ERR  #418:  argument "pn1" is real, but dummy argument is
                 integer*4 
                 See: "Repeat.f" line #14
     4             CALL nwfrk ( pn1 )
                                  ^
**** ERR  #317:  variable "pn1" referenced as integer*4 across
                 repeat/nwfrk//prnok in line #21 but set as real 
                 by repeat in line #2
subroutine  subr1
    10              CALL subr1 ( x * 0.5 )
                             ^
**** WAR  #348:  recursive call for "subr1". See dynamic calls:
                 "Repeat.f" line #3
subroutine  nwfrk
    17             PRINT *, prnok ( ix ), fork ( )
                                     ^
**** ERR  #418:  argument "ix" is integer*4, but dummy argument 
                 is real
                 See: "Repeat.f" line #20
subroutine  unreach_sub
    24           SUBROUTINE unreach_sub()
                                      ^
**** WAR  #338:  subroutine "unreach_sub" isn't called from program

Date:     Wed Feb 24 10:40:32 1999
Files:         2 (Sources: 1; libraries: 1)
Lines:        26 (Sources: 26; Library subprograms:2)
Routines:      5 (MAIN: 1; Subroutines: 3; Functions: 1)
Messages:      5 (Errors: 3; Warnings: 2)
demo%

Compiling the same program with --Xlist also produces a cross-reference table on standard output:


         C R O S S   R E F E R E N C E   T A B L E
  Source file:   Repeat.f
Legend:
D        Definition/Declaration
U        Simple use
M        Modified occurrence
A        Actual argument
C        Subroutine/Function call
I        Initialization: DATA or extended declaration
E        Occurrence in EQUIVALENCE
N        Occurrence in NAMELIST

         P R O G R A M   F O R M
 Program
 -------
repeat          <repeat>        D      1:D 

 Functions and Subroutines
 -------------------------
fork     int*4  <nwfrk>        DC     15:D     16:D     17:C 

int      intrinsic
                <prnok>         C     21:C 

loc      intrinsic
                <repeat>        C      2:C 
                <prnok>         C     21:C 

nwfrk           <repeat>        C      4:C 
                <nwfrk>         D     14:D 

prnok    int*4  <nwfrk>        DC     16:D     17:C 
                <prnok>        DM     20:D     21:M 

real     intrinsic
                <repeat>        C      2:C 

sleep           <unreach_sub>            C     25:C 

subr1           <repeat>        C      3:C 
                <subr1>        DC      8:D     10:C 
unreach_sub     <unreach_sub>            D     24:D 

Output from compiling f77 -Xlist Repeat.f (Continued)


 Variables and Arrays
 --------------------

ix       int*4  dummy
                <nwfrk>        DA     14:D     17:A 

pn1      real*4 <repeat>      UMA      2:M      3:A      4:A      5:U 

rp1      real*4 <repeat>        A      2:A 

x        real*4 dummy
                <subr1>        DU      8:D      9:U     10:U 
                <prnok>       DUA     20:D     21:A     21:U 

----------------------------------------------------------------------

Date:     Tue Feb 22 13:15:39 1995
Files:         2 (Sources: 1; libraries: 1)
Lines:        26 (Sources: 26; Library subprograms:2)
Routines:      5 (MAIN: 1; Subroutines: 3; Functions: 1)
Messages:      5 (Errors: 3; Warnings: 2)
demo%

In the cross-reference table in the preceding example: