Table of Contents
Previous: -reference
Option: resources
-resources
Prints the amount of resources
used by ftnchek in processing the program. This listing may be useful
in analyzing the size and complexity of a program. It can also help in
choosing larger sizes for ftnchek 's internal tables if they are too small
to analyze a particular program. Default = no.
In this listing, the term
``chunk size'' is the size of the blocks of memory allocated to store the
item in question, in units of the size of one item, not necessarily in
bytes. When the initially allocated space is filled up, more memory is
allocated in chunks of this size. The following is an explanation of the
items printed:
- Source lines processed:
- Total number of lines of code,
with separate totals for statement lines and comment lines. Comment lines
include lines with 'C' or '*' in column 1 as well as blank lines and lines
containing only an inline comment. Statement lines are all other lines,
including lines that have an inline comment following some code. Continuation
lines are counted as separate lines. Lines in include files are counted
each time the file is included.
- Total executable statements:
- Number of
statements in the program, other than specification, data, statement-function,
FORMAT, ENTRY, and END statements.
- Total number of modules:
- A module is
any external subprogram, including the main program, subroutines, functions,
and block data units. This count is of modules defined within the source,
not modules referenced. Statement functions are not included. A subprogram
with multiple entry points is only counted once.
- Max identifier name chars:
- Number of characters used for storing identifier names. An identifier
is a variable, subprogram, or common block name. Local names are those
of local variables in a subprogram, whereas global names refer to subprogram
and common block names, as well as dummy argument names and common variable
names. Actual argument text (up to 15 characters for each argument) is
also included here. The space used for local names is recovered at the
end of each module, whereas the global space grows until the whole program
is analyzed. Unfortunately, this figure may include some common block
names and arguments stored more than once, although a heuristic is used
that will avoid duplicates in many cases.
- Max token text chars:
- A token
is the smallest syntactic unit of the FORTRAN language above the level
of individual characters. For instance a token can be a variable name,
a numerical constant, a quoted text string, or a punctuation character.
Token text is stored while a module is being processed. For technical
reasons, single-character tokens are not included in this total. Items
that are not represented in the symbol table may be duplicated. The space
for token text is recovered at the end of each module, so this figure
represents the maximum for any one module.
- Max local symbols:
- This is
the largest number of entries in the local symbol table for any module.
Local symbol table entries include all variables and parameters, common
block names, statement functions, external subprograms and intrinsic functions
referenced by the module. Literal constants are not stored in the local
symbol table.
- Max global symbols:
- This is the number of entries in the
global symbol table at the end of processing. Global symbol table entries
include external subprogram and common block names. Intrinsic functions
and statement functions are not included.
- Max number of tokenlists:
- A
token list is a sequence of tokens representing the actual or dummy argument
list of a subprogram, or the list of variables in a common block or namelist.
Therefore this number represents the largest sum of COMMON, CALL, NAMELIST
and ENTRY statements and function invocations for any one module. The
space is recovered at the end of each module.
- Max token list/tree space:
- This is the largest number of tokens in all the token lists and token
trees of any one module. A token tree is formed when analyzing an expression:
each operand is a leaf of the tree, and the operators are the nodes. Therefore
this number is a measure of the maximum complexity of an individual module.
For instance a module with many long arithmetic expressions will have
a high number. Note that unlike token text described above, the number
of tokens is independent of the length of the variable names or literal
constants in the expressions.
- Number of subprogram invocations:
- This is
the sum over all modules of the number of CALL statements and function
invocations (except intrinsic functions and statement functions).
- Number
of common block decls:
- This is the sum over all modules of the number
of common block declarations. That is, each declaration of a block in
a different module is counted separately. (The standard allows multiple
declarations of a block within the same module; these are counted as only
one declaration since they are equivalent to a single long declaration.)
- Number of array dim & param ptrs:
- This is the sum over all modules of
the number of array dimension and parameter definition text strings saved
for use by the -makedcls option. The length of the text strings is not
counted. Each dimension of a multidimensional array is counted separately.
These numbers are obviously not the same when project files are used in
place of the original source code. Even the numbers for global entities
may be different, since some redundant information is eliminated in project
files.
Next: -sixchar