ftnlint(1)
ftnlint - Checks Fortran programs for possible errors
As shipped in 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)