ftnlist(1)

ftnlist - Provides a detailed Fortran program listing

Showing MIPSpro 7.4.3m.

NAME
     ftnlist - Provides a detailed Fortran program listing

SYNOPSIS
     ftnlist [-a] [-b] [-c] [-C] [-d option_ID] [-e option_ID]
     [-f option_ID] [-g option_ID] [-h] [-H] [-i number] [-n number]
     [-o filename] [-p] [-r number] [-s number] [-v number] [-V] file.f[90]
     [file.T]  ...

DESCRIPTION
     The ftnlist command lists a Fortran program with cross-references,
     loop and parallel indicators, and reports from a static call-tree
     analysis.  ftnlist produces a set of listings, tables, and reports
     about the target Fortran programs, as follows:

     * A source listing with associated reports, optional INCLUDE file
       expansions, and cross-reference tables using command-line options.

     * A set of reports and cross-reference information for each subprogram
       encountered.

     * A set of reports and cross reference information for each Fortran
       source file encountered.

     * A set of cross-reference tables and reports that are global to the
       application.  You can control these through command-line options.

     * Summary information and a table of contents.

     The ftnlist command embeds error messages, if any, in the source code.
     It indicates jump and target directions and produces the following
     tables for each compilation unit.  The exact content of the report
     depends on the compiler you are using:

     * Argument usage

     * Alternate ENTRY point table

     * Named constant usage

     * Common block usage

     * NAMELIST report

     * Parallelism report

     * Externals usage

     * Label table

     * Local variables usage

     * Module usage report

     * Internal subprogram report

     * Interface block report

     * Derived type report

     * Identifier cross-reference

     * ftnlist message report

     * Compiler messages

     The ftnlist message report contains information about the compilation
     unit that might bear further investigation (for example, arguments
     that are never used or local variables that are used before they are
     defined).

     When multiple compilation units or multiple files are presented to
     ftnlist, it also produces a series of global reports, including the
     following:

     * Global call-chain messages (for example, argument type and number
       checking and hidden alias analysis)

     * Table of files encountered, including some statistics about each

     * File/compilation unit cross-reference

     * Table of compilation units encountered, including statistics about
       each

     * Table of external subprograms encountered

     * Table of common blocks encountered

     * Common block/subprogram cross-reference

     * Subprogram - subprogram/common block cross-reference

     * INCLUDE file/subprogram cross-reference

     * NAMELIST/subprogram cross-reference

     * Module cross reference

     * A short identifier cross-reference (including I/O references and
       STOP and INCLUDE statements)

     * A local and global message summary

     * A table of contents for the listing

     * Some statistics per file and for the entire program

     To suppress any or all of the messages, use the -s command-line
     option.

     For each Fortran source file (.f or .f90 suffix) that is listed, you
     must supply a corresponding compiler information file (.T suffix).  On
     IRIX systems, you can create the CIF by executing the f90(1) command
     with the -cif option.

     The ftnlist command supports the following options:

     -a        Prints all common block members in the subprogram
               cross-reference in addition to the used ones.  (All members
               are printed for BLOCK DATA routines.)

     -b        Does not print blank lines.  (Always suppresses blank lines
               between subprograms.)

     -c        Does not print blank comment lines.

     -C        Does not print the summary.  Implies that -g 0 and -s501-527
               have also been specified.

     -d option_ID
               Disables subprogram list options; -d 0 disables all options.
               An option_ID is base-sensitive, additive, and processed left
               to right.

     -e option_ID
               Enables subprogram list options; -e 0 enables all options.
               An option_ID is base-sensitive, additive, and processed left
               to right.  The following table shows the ID of each
               subprogram list option in decimal, octal, and hexadecimal.

   Decimal    Octal    Hexadecimal  Default   Description
        1  0000000001  0x0000001     OFF   Column indicators
        2  0000000002  0x0000002     ON    Go_to, Come_from arrows
        4  0000000004  0x0000004     ON    Subprogram trailer line
                                              (enabled when source list
                                              disabled, except with -d0)
        8  0000000010  0x0000008     ON    Alternate entry points
       16  0000000020  0x0000010     ON    Compiler messages
       32  0000000040  0x0000020     ON    Local variable reports
       64  0000000100  0x0000040     ON    Named constant report
      128  0000000200  0x0000080     ON    Label table
      256  0000000400  0x0000100     ON    Common block report (enabled
                                              when cross-reference enabled)
      512  0000001000  0x0000200     OFF   Common block variable usage
     1024  0000002000  0x0000400     ON    Externals
     2048  0000004000  0x0000800     ON    NAMELIST report
     4096  0000010000  0x0001000     OFF   Long line indicators
     8192  0000020000  0x0002000     ON    Derived type report (on when
                                              cross-reference is on)
    16384  0000040000  0x0004000     ON    Interface block report
    32768  0000100000  0x0008000     ON    Internal subprogram report
   262144  0001000000  0x0040000     ON    Argument report
   524288  0002000000  0x0080000     ON    Cross-reference map
  8388608  0040000000  0x0800000     ON    ftnlist messages
 16777216  0100000000  0x1000000     ON    Source

          To select more than one list option, add the IDs of those options
          and specify the total.  For example, to enable column indicators
          (ID = 1) and to disable compiler messages (ID = 16) and the
          NAMELIST report (ID = 2048), specify one of the following:

          ftnlist -e1 -d2064
          ftnlist -e1 -d0000004020
          ftnlist -e1 -d0x0000810

     -f option_ID
               Enables global list options; -f 0 enables all options.  An
               option_ID is base-sensitive, additive, and processed left to
               right.

     -g option_ID
               Disables global list options; -g 0 disables all options.  An
               option_ID is base-sensitive, additive, and processed left to
               right.  To select more than one list option, add the IDs of
               those options and specify the total.  The following table
               shows the ID of each global list option in decimal, octal,
               and hexadecimal.

Decimal    Octal  Hexadecimal  Default  Description
     1   0000001   0x00001      ON     File header
     2   0000002   0x00002      ON     File common block and NAMELIST reports
     4   0000004   0x00004      ON     File subprogram report
     8   0000010   0x00008      ON     File statistics
    16   0000020   0x00010      ON     Files encountered
    32   0000040   0x00020      ON     File/subprogram cross-reference
    64   0000100   0x00040      ON     Subprograms encountered
   128   0000200   0x00080      ON     Externals encountered
   256   0000400   0x00100      ON     Common block report
   512   0001000   0x00200      OFF    (Unused)
  1024   0002000   0x00400      ON     Common/subprogram cross-reference
  2048   0004000   0x00800      ON     Subprogram cross-reference
  4096   0010000   0x01000      ON     Identifier cross-reference
  8192   0020000   0x02000      OFF    (Unused)
 16384   0040000   0x04000      ON     ftnlist messages
 32768   0100000   0x08000      ON     INCLUDE file cross-reference
 65536   0200000   0x10000      ON     NAMELIST cross-reference
131072   0400000   0x20000      ON     Module report

     -h        (Help)  Displays only command-line options, suppressible
               message IDs, and the list option IDs (no program execution).

     -H        (Help)  Displays the following abbreviated command line
               options (no program execution):

               a   AllXRefPrint                   i:  IncludeFileExpansion

               b   BlankPrintSuppress             n:  NewPagePerSubPgm

               c   CommentNullSuppress            o:  OutputFile

               C   CompendiumDisable              p:  PackSourceList

               d:  DisableSubrListOptions         r:  RestoreMessages

               e:  EnableSubrListOptions          s:  SuppressMessages

               f:  FnableGlobalListOptions        v:  VarLinesPerPage

               g:  GlobalListOptionsDisable       V   Print VersNo (stderr)

               hH  Help (no execution)

     -i number INCLUDE file expansion option.  Errors follow the INCLUDE
               data.  For number, enter the number that corresponds to the
               type of INCLUDE file expansion you want.

               number    INCLUDE file expansion

               0         No INCLUDE file expansion.  (default)

               1         Expands first appearance of first level only.

               2         Expands first appearance of all first-level and
                         inner-level INCLUDE files.

               3         Expands first appearance of INCLUDE files with
                         errors.

               4         Expands all appearances of first-level INCLUDE
                         files.

               5         Expands all appearances of all levels.

     -n number Sets pagination for the printing of external subprograms, as
               follows:

               number    Pagination

               1         If less than one-half page remains, go to a new
                         page.

               2-20      Each subprogram is printed on a new page
                         (default).

               20-n      If less than number+5 lines remain, go to a new
                         page.

     -o filename
               Writes the output to filename instead of stdout.

     -p        Allows page breaks to occur within multiline statements.

     -r number Restores/enables subprogram or global message number, which
               can be a range (for example, -r22-51 or -r503-507).  The
               valid values for number range from 1 through 77 and 501
               through 531.  -r 0 restores all messages.  See individual
               message IDs for local and global messages in the table that
               follows (with -s option).

     -s number Suppresses subprogram or global message number, which can be
               a range (for example, -s22-51 or -s503-507).  The valid
               ranges for number are 1 through 77 and 501 through 531.  -s
               0 suppresses all messages.

               The following lists show the message IDs for local and
               global messages.  You can suppress any or all of them.

               Message IDs per subprogram encountered:


          1    Local Variable ____ may be used before it is defined
          2    Local Variable ____ is declared but never used
          3    Local Variable ____ is used but never defined
          4    Local Variable ____ is defined but never used
          5    Local Variable ____ is DATA-initialized but may be redefined
                    before used
          6    Local Variable ____ is DATA-initialized but never used
          7    Local Variable ____ is EQUIVALENCEd but never used
          8    Multiword Variable ____ is EQUIVALENCEd but may overrun its
                    COMMON block-partner
          9    Module Local Variable never used
          10   Local Variable ____, IntSubPgm ____ overrides host version
          11   No references to COMMON /____/
          12   No references to the INCLUDEd COMMON /____/
          13   COMMON /____/ is both INCLUDEd and explicitly declared
          14   COMMON /____/ is both explicitly declared and available via
                    a MODULE
          15   COMMON /____/ is never referenced in parent Module
          21   Argument ____ is never used
          22   CALL ____ has a different ArgCnt than previous CALL
                    encountered
          23   Argument ____ is used as a dimension and is modified
          24   Argument ____ has INTENT(OUT) but is neither written nor
                    passed
          31   Warning: DO-Loop Index __ (line ___) is in COMMON
          32   Warning: DO-Loop Index __ (line ___) is an Argument
          33   Warning: DO-Loop Index __ (line ___) is a Module variable
          41   No references to PARAMETER ____
          42   No references to the INCLUDEd PARAMETER ____
          43   No references to the Module PARAMETER ____
          51   Subprogram ____ has neither a RETURN nor a STOP statement
          52   Subprogram ____ appears to not do anything
          53   __ Unused label(s)
          54   FUNCTION ____ side-effect:  Argument(s) are written
          55   FUNCTION ____ side-effect:  COMMON Block(s) are written
          56   Subprogram ____ has excessive trailing blanks (off by
                    default)
          57   Internal subprogram ____ is never called
          58   Duplicate subprogram name ____
          61   No references to Statement Function ____
          62   Line ____ is not reachable
          63   NAMELIST /____/ is never used
          64   __ Longline(s) (off by default)
          65   Cray Pointer/ee ____ may be used before it is defined
          66   Cray Pointer/ee ____ is declared but never used
          67   Cray Pointer/ee ____ is used but never defined
          68   Cray Pointee ____ is defined but never used
          69   Cray Pointee ____ is used but associated Pointer ____ not
                    defined
          71   EQUIVALENCEd LocalVar ____ has same name as MODULE variable
          72   EQUIVALENCEd LocalVar ____ has same name as MODULE ComBlk
                    variable
          73   No references to imported Module ____
          74   No references to USEd Module ____
          75   Module ____ USEd more than once
          76   USEd Module ____ also imported into parent Module
          77   Duplicate Module name ____

               Message ID for global call-chain concerns:


               501  No callers
               502  Argument count mismatch
               503  Argument type mismatch
               504  Expression passed as argument, Callee writes/passes
               505  Expression passed as argument, Callee expects array
               506  DO-Loop index sent as Argument, Callee writes/passes it
               507  Argument dimensionality mismatch
               508  Duplicate argument sent, Callee writes/passes one
               509  Argument sent from COMMON, Callee writes that COMMON
               510  Possible hidden alias
               511  COMMON block length mismatch
               512  COMMON block is never used
               513  COMMON block is read-only
               514  COMMON block is write-only
               515  NAMELIST length mismatch
               516  FUNCTION return value mismatch
               517  F90 argument attribute mismatch
               518  F90 caller:  required explicit interface block missing
               519  F90 dummy argument INTENT error
               520  Subprogram needs RECURSIVE keyword
               521  SUBROUTINE/FUNCTION CALL mismatch
               522  Duplicate Subprogram name
               523  Duplicate Module name
               524  Argument (Subprogram) mismatch (e.g. scalar passed,
                         SUBROUTINE expected, etc.)
               525  Argument (Derived Type) mismatch
               526  Possible argument (SUBROUTINE/FUNCTION) mismatch
               527  Alternate ENTRY has no callers
               528  Subprogram/Interface Block mismatch
               529  Common block has multiple SubPgm DATA initialization
               530  Argtype (Alternate-RETURN-label) mismatch
               531  FUNCTION return value dimension mismatch

     -v number Sets the maximum lines per page to number.  The default is
               the value of the LPP environment variable if it is set;
               otherwise, the value is 63.  The valid range for number is
               50 through 200.

     -V        Prints version information to stderr.

     file.f[90] [file.T]
               Specifies the set of target Fortran source files and their
               derived Compiler Information Files.  Source file names can
               end with either .f or .f90.  When the .T file name can be
               generated by replacing the .f (or .f90) with a .T, you do
               not have to list the .T file name explicitly.

FILES
     These commands look for files named .ftnlistrc in your home directory
     and the current working directory; they concatenate them (in that
     order); and they prepend the resulting string to the command line
     options.  The .ftnlistrc file can contain any combination of command
     line options, but a maximum of one -o filename option is allowed.  The
     .ftnlistrc cannot contain file names.  Newline characters are silently
     converted to blanks.  The command line options are processed left to
     right, so options included in the .ftnlistrc file can be overridden.

EXAMPLES
     The following is an example of the cross-reference map, which is part
     of the listing generated by ftnlist:

        Type    Usage  EqDSv Offset  Home      Name           References
       ------   -----  ----- ------ ------    ------        --------------
       Real    1-D Arr            2  Arg      A              1     2     5=
       Real    1-D Arr            1  Arg      B              1     2     5
       Real    1-D Arr            3  Arg      C              1     2     5
       Int64   Scalar    -        0  Stack    I              4=    5+
       Int64   Scalar             4  Arg      N              1     4
                                              {Return}       7

     Nc  where N is the local line number and c is one of =-+.

     = means "set",  - means "passed",  + means "multiple references",  .
     means "INCLUDEd reference".

     The following list explains each column:

     Type           The type of the entity being reported

     Usage          How the entity is being used.  Scalar means a simple
                    (not dimensioned) variable, and 3-D Arr means a three-
                    dimensional array.

     EqDSv          Gives the EQUIVALENCE, DATA, or SAVE status (if any) of
                    the entity.

     Offset         The offset of the entity from the base of its home.
                    For example, for an Arg, a 3 means it is the third
                    argument, and for a common block reference, a 7 means
                    it is 7 words from the base address of the common block
                    (which can be found from a load map).

     Home           Indicates where the entity is located.  For example,
                    Arg means it is an argument to this procedure; stack
                    means it is on the stack for this procedure; /2/ means
                    it is in common block 2 (see common block table), and
                    so on.  Not all entities have a home.

     Name           The variable name, or another reported cross reference
                    entity, such as {Return}.

     References     The line numbers at which the entity can be found.  The
                    symbols following line numbers, such as = and  +, are
                    explained in the footnote following the cross-reference
                    table.

NOTES
     ftnlist output is not designed to be used as input to other tools.

     These commands perform limited EQUIVALENCE analysis, which assumes
     that if a local variable appears in an EQUIVALENCE statement, it is
     not subject to analysis (for example, use before definition).

     These commands produce source listings, but they do not produce
     reports for any subprograms that contain errors.

ENVIRONMENT VARIABLES
     The ftnlist command checks your environment for several strings to
     help control its output.  If the CCTL environment variable is set to
     FORTRAN, Fortran-style carriage control (a 1 in column one) initiates
     a new page; otherwise, the ASCII form-feed character is used.  The
     default is ASCII.  If the LPP environment variable is set to an
     integer in the range 50 to 200, these commands put out a maximum of
     integer lines per page.  The default is 63 lines per page.  To
     override the LPP or default value, use the -v option.  If the
     FTNLISTRC environment variable is set to OFF all .ftnlistrc files are
     silently ignored.

RETURN VALUES
     The ftnlist command returns 0 on normal completion and nonzero for
     abnormal termination.

BUGS
     ftnlist accepts Fortran program source files that end in .F or .F90,
     but some of the functionality described on this man page is not
     present for files with .F and .F90 suffixes.

SEE ALSO
     ftnlint(1), f90(1)