The following options control the dialect of Fortran that the compiler accepts:
-ffree-form
-fno-fixed-form
-ff90
This option controls whether certain
Fortran 90 constructs are recognized.
(Other Fortran 90 constructs
might or might not be recognized depending on other options such as
-fvxt
, -ff90-intrinsics-enable
, and the
current level of support for Fortran 90.)
See Fortran 90, for more information.
-fvxt
The default is -fno-vxt
.
-fvxt
specifies that the VXT Fortran interpretations
for those constructs are to be chosen.
See VXT Fortran, for more information.
-fdollar-ok
$
as a valid character in a symbol name.
-fno-backslash
\
is not to be specially interpreted in character
and Hollerith constants a la C and many UNIX Fortran compilers.
For example, with -fbackslash
in effect, A\nB
specifies
three characters, with the second one being newline.
With -fno-backslash
, it specifies four characters,
A
, \
, n
, and B
.
Note that g77
implements a fairly general form of backslash
processing that is incompatible with the narrower forms supported
by some other compilers.
For example, 'A\003B'
is a three-character string in g77
whereas other compilers that support backslash might not support
the three-octal-digit form, and thus treat that string as longer
than three characters.
See Backslash in Constants, for
information on why -fbackslash
is the default
instead of -fno-backslash
.
-fno-ugly-args
CALL FOO(4HABCD)
).
See Ugly Implicit Argument Conversion, for more information.
-fugly-assign
ASSIGN 10 TO I
) or used to hold numeric data
(as in I = 3
).
See Ugly Assigned Labels, for more information.
-fugly-assumed
1
is really an assumed-size array, as if *
had been specified
for the final dimension instead of 1
.
For example, DIMENSION X(1)
is treated as if it
had read DIMENSION X(*)
.
See Ugly Assumed-Size Arrays, for more information.
-fugly-comma
For example, CALL FOO(,)
is treated as
CALL FOO(%VAL(0), %VAL(0))
.
That is, two null arguments are specified
by the procedure call when -fugly-comma
is in force.
And F = FUNC()
is treated as F = FUNC(%VAL(0))
.
The default behavior, -fno-ugly-comma
, is to ignore
a single trailing comma in an argument list.
So, by default, CALL FOO(X,)
is treated
exactly the same as CALL FOO(X)
.
See Ugly Null Arguments, for more information.
-fugly-complex
REAL(
expr)
or
AIMAG(
expr)
when expr is a COMPLEX
type other than COMPLEX(KIND=1)
--usually
this is used to permit COMPLEX(KIND=2)
(DOUBLE COMPLEX
) operands.
The -ff90
option controls the interpretation
of this construct.
See Ugly Complex Part Extraction, for more information.
-fno-ugly-init
PARAMETER
and DATA
statements), and
use of character constants to
initialize numeric types and vice versa.
For example, DATA I/'F'/, CHRVAR/65/, J/4HABCD/
is disallowed by
-fno-ugly-init
.
See Ugly Conversion of Initializers, for more information.
-fugly-logint
INTEGER
and LOGICAL
variables and
expressions as potential stand-ins for each other.
For example, automatic conversion between INTEGER
and
LOGICAL
is enabled, for many contexts, via this option.
See Ugly Integer Conversions, for more information.
-fonetrip
DO
loops are to be executed at
least once each time they are reached.
ANSI FORTRAN 77 and more recent versions of the Fortran standard
specify that the body of an iterative DO
loop is not executed
if the number of iterations calculated from the parameters of the
loop is less than 1.
(For example, DO 10 I = 1, 0
.)
Such a loop is called a zero-trip loop.
Prior to ANSI FORTRAN 77, many compilers implemented DO
loops
such that the body of a loop would be executed at least once, even
if the iteration count was zero.
Fortran code written assuming this behavior is said to require
one-trip loops.
For example, some code written to the FORTRAN 66 standard
expects this behavior from its DO
loops, although that
standard did not specify this behavior.
The -fonetrip
option specifies that the source file(s) being
compiled require one-trip loops.
This option affects only those loops specified by the (iterative) DO
statement and by implied-DO
lists in I/O statements.
Loops specified by implied-DO
lists in DATA
and
specification (non-executable) statements are not affected.
-ftypeless-boz
Z'ABCD'
, are typeless instead of INTEGER(KIND=1)
.
You can test for yourself whether a particular compiler treats
the prefix form as INTEGER(KIND=1)
or typeless by running the
following program:
EQUIVALENCE (I, R) R = Z'ABCD1234' J = Z'ABCD1234' IF (J .EQ. I) PRINT *, 'Prefix form is TYPELESS' IF (J .NE. I) PRINT *, 'Prefix form is INTEGER' END
Reports indicate that many compilers process this form as
INTEGER(KIND=1)
, though a few as typeless, and at least one
based on a command-line option specifying some kind of
compatibility.
-fintrin-case-initcap
-fintrin-case-upper
-fintrin-case-lower
-fintrin-case-any
-fintrin-case-lower
is the default.
-fmatch-case-initcap
-fmatch-case-upper
-fmatch-case-lower
-fmatch-case-any
-fmatch-case-lower
is the default.
-fsource-case-upper
-fsource-case-lower
-fsource-case-preserve
-fsource-case-lower
is the default.
-fsymbol-case-initcap
-fsymbol-case-upper
-fsymbol-case-lower
-fsymbol-case-any
-fsymbol-case-any
is the default.
-fcase-strict-upper
-fintrin-case-upper -fmatch-case-upper -fsource-case-preserve
-fsymbol-case-upper
.
(Requires all pertinent source to be in uppercase.)
-fcase-strict-lower
-fintrin-case-lower -fmatch-case-lower -fsource-case-preserve
-fsymbol-case-lower
.
(Requires all pertinent source to be in lowercase.)
-fcase-initcap
-fintrin-case-initcap -fmatch-case-initcap -fsource-case-preserve
-fsymbol-case-initcap
.
(Requires all pertinent source to be in initial capitals,
as in Print *,SqRt(Value)
.)
-fcase-upper
-fintrin-case-any -fmatch-case-any -fsource-case-upper
-fsymbol-case-any
.
(Maps all pertinent source to uppercase.)
-fcase-lower
-fintrin-case-any -fmatch-case-any -fsource-case-lower
-fsymbol-case-any
.
(Maps all pertinent source to lowercase.)
-fcase-preserve
-fintrin-case-any -fmatch-case-any -fsource-case-preserve
-fsymbol-case-any
.
(Preserves all case in user-defined symbols,
while allowing any-case matching of intrinsics and keywords.
For example, call Foo(i,I)
would pass two different
variables named i
and I
to a procedure named Foo
.)
-fbadu77-intrinsics-delete
-fbadu77-intrinsics-hide
-fbadu77-intrinsics-disable
-fbadu77-intrinsics-enable
-fbadu77-intrinsics-enable
is the default.
See Intrinsic Groups.
-ff2c-intrinsics-delete
-ff2c-intrinsics-hide
-ff2c-intrinsics-disable
-ff2c-intrinsics-enable
-ff2c-intrinsics-enable
is the default.
See Intrinsic Groups.
-ff90-intrinsics-delete
-ff90-intrinsics-hide
-ff90-intrinsics-disable
-ff90-intrinsics-enable
-ff90-intrinsics-enable
is the default.
See Intrinsic Groups.
-fgnu-intrinsics-delete
-fgnu-intrinsics-hide
-fgnu-intrinsics-disable
-fgnu-intrinsics-enable
-fgnu-intrinsics-enable
is the default.
See Intrinsic Groups.
-fmil-intrinsics-delete
-fmil-intrinsics-hide
-fmil-intrinsics-disable
-fmil-intrinsics-enable
-fmil-intrinsics-enable
is the default.
See Intrinsic Groups.
-funix-intrinsics-delete
-funix-intrinsics-hide
-funix-intrinsics-disable
-funix-intrinsics-enable
-funix-intrinsics-enable
is the default.
See Intrinsic Groups.
-fvxt-intrinsics-delete
-fvxt-intrinsics-hide
-fvxt-intrinsics-disable
-fvxt-intrinsics-enable
-fvxt-intrinsics-enable
is the default.
See Intrinsic Groups.
-ffixed-line-length-
n
Popular values for n include 72 (the
standard and the default), 80 (card image), and 132 (corresponds
to "extended-source" options in some popular compilers).
n may be none
, meaning that the entire line is meaningful
and that continued character constants never have implicit spaces appended
to them to fill out the line.
-ffixed-line-length-0
means the same thing as
-ffixed-line-length-none
.
See Source Form, for more information.