ftnlint(1)

ftnlint - Checks Fortran programs for possible errors

Showing MIPSpro 7.4.3m.

NAME
     ftnlint - Checks Fortran programs for possible errors

SYNOPSIS
     ftnlint [-h] [-o filename] [-r number] [-s number]
     [-V] file.f[90] [file.T]  ...

DESCRIPTION
     The ftnlint command checks Fortran programs for program constructs
     that may need further investigation (for example, arguments that are
     never used or local variables used before they are defined).  ftnlint
     performs these checks on two levels:  local per subprogram and global
     for all encountered subprograms.

     For each Fortran source file (.f or .f90 suffix) to be checked, you
     must supply a corresponding compiler information file (.T suffix).
     Create the CIF by executing the f90(1) command with the -cif option.

     The ftnlint command supports the following options:

     -h        Displays only command line options and suppressable message
               IDs (no program execution).

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

     -r number Restores/enables subprogram or global message number, which
               can be a range (for example, -r22-51 or -r503-507).  The
               valid ranges for number are 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
               values for number range from 1 through 77 and 501 through
               531.

               The following lists show the message IDs for local and
               global messages, any of which you can suppress by using the
               -s option.

               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 is 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 reference 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
             57  Internal Subprogram ____ is never called
             58  Duplicate SubPgm name ____
             61  No references to Statement Function ____
             62  Line ____ is not reachable
             63  NAMELIST /____/ is never used
             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 IDs 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
               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 initializations
               530  Argtype (Alternate-RETURN-label) mismatch
               531  FUNCTION return value dimension mismatch


     -V        Prints version information to the stderr file.

     file.f[90] [file .T]
               Specifies the set of target Fortran source files and their
               derived Compiler Information Files.  Source file names can
               be suffixed 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 specify the .T file name explicitly.  The .f
               and .f90 files must precede their corresponding .T files
               specified.

FILES
     This command looks for files named .ftnlintrc in your home directory
     and the current working directory; it concatenates them (in that
     order) and prepends the resulting string to the command line options.
     The .ftnlintrc file can contain any combination of command line
     options, but a maximum of one -o filename option is allowed.  The
     .ftnlintrc file 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 .ftnlintrc file can be
     overridden.

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

     This command performs only limited analysis of subprograms that
     contain syntax errors.  It performs 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).

     The ftnlint command is a subset of the ftnlist(1) command.

ENVIRONMENT VARIABLES
     If the FTNLINTRC environment variable is set to OFF all .ftnlintrc
     files are silently ignored.

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

BUGS
     ftnlint 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
     ftnlist(1), f90(1)