flow - show subroutine dependence of Fortran77 programs
flow [-hCcFfRSsUVW] file(s)
flow is a utility which shows the SUBROUTINE dependence of a
Fortran77 program. It lists the called routine names and indicates their
CALL level by indention.
CALL statements in the case of an IF condition are
also reported but not separately marked.
By default no warning is given if a called SUBROUTINE is
not found in the input files. This gives the possibility to reduce the
output by omitting some file names including further subroutine-calls.
In addition a little statistic with the count of total, comment
and source-code lines is presented. Further the number of IF
statements is also given as the number of declared SUBROUTINE
procedures and CALL sequences.
There is no limitation of the number of given files. By use of an
appropriate shell wildcards like * or ? can be used in
the name(s) of the file(s).
- -h
- Print a usage message on standard output and exit.
- -C
- Print each CALL statement which is found in input.
- -c
- Each found CALL of a SUBROUTINE is reported in a file named
FLOW.CALL with the name of the file where it was called and the
line number. The file FLOW.CALL may be sorted in alphabetically order by
the sort command.
- -F
- Print the FILE name of input which is actually on work.
- -f
- The output of the dependence is written on a file with the name of the
program and the ending .FLOW instead of the screen.
- -r <name>
- Set a new starting point. Instead of starting at the PROGRAM the work is
done only for the SUBROUTINE <name>. This option is useful to
check all called routines out of this one.
- -R
- Omit recursive hanging. Each called SUBROUTINE is printed with all
subsequent CALL statements only the first time it is invoked. At
the later times only the root SUBROUTINE (=starting point) is
given.
- -S
- Print each SUBROUTINE statement which is found in input.
- -s
- Each found declaration of a SUBROUTINE is reported in a file named
FLOW.SUBS with the name of the file where it is declared together
with the line number. The file FLOW.SUBS may be sorted in alphabetically
order by the sort command.
- -U
- If a SUBROUTINE is called which is not found in the input, a
warning message is given. Such a case can occur for example by system
calls like CALL EXIT
- -V
- Print version number of flow and name of author. Finally the
program ends.
- -W
- A warning is given if a line exceeds a length of 72 characters. Spaces at
the end of the line are thereby not counted. Comment lines are not
controlled.
Recursive hanging is omitted by the option -R which has the effect, that
only the first time a called SUBROUTINE is followed up to the last
CALL. However if the call starts out of another level of the program,
e.g. an deeper lying SUBROUTINE the consecutively following
CALLs will not be printed again. This obviously shortens the output and
may lead to some confusion. Be cautious!
- IF ... THEN ... ELSEIF(...)CALL
- statements are not considered to appeare in the code. (Is such a
construction allowed?)
- flow -U *.f | less
- All files with suffix .f of the current directory are used as input. A
warning message will be given if a subroutine is called which is not part
of any input file. The output is piped to less(1) so you can browse
up and down through it during it grows.
- flow -V
- The number of the actual version is printed.
- flow -h
- You get a little help message.
- flow -s *.f ; sort FLOW.SUBS > SUBS.SORT
- Each found subroutine in all fortran files of the actual directory is
written to the file FLOW.SUBS together with the file name and line
number where the declaration appears. After this the sort Program
is called to sort the names of the subroutines in alphabetically order.
The file SUBS.SORT contains the final result.
- flow -scFfUW *.f
- This is maybe the best combination of all Options if the program is spread
over several files.
Dirk Geschke <geschke@physik.uni-kassel.de>
A formatted output into special file formats like TeX/LaTeX or
Postscript is planned?
bash(1), csh(1), f77(1), ksh(1), less(1), sort(1), tcsh(1)