Ugly Assumed-Size Arrays
------------------------
The `-fugly-assumed' option enables the treatment of any array with
a final dimension specified as `1' as an assumed-size array, as if `*'
had been specified instead.
For example, `DIMENSION X(1)' is treated as if it had read
`DIMENSION X(*)' if `X' is listed as a dummy argument in a preceding
`SUBROUTINE', `FUNCTION', or `ENTRY' statement in the same program unit.
Use an explicit lower bound to avoid this interpretation. For
example, `DIMENSION X(1:1)' is never treated as if it had read
`DIMENSION X(*)' or `DIMENSION X(1:*)'. Nor is `DIMENSION X(2-1)'
affected by this option, since that kind of expression is unlikely to
have been intended to designate an assumed-size array.
This option is used to prevent warnings being issued about apparent
out-of-bounds reference such as `X(2) = 99'.
It also prevents the array from being used in contexts that disallow
assumed-size arrays, such as `PRINT *,X'. In such cases, a diagnostic
is generated and the source file is not compiled.
The construct affected by this option is used only in old code that
pre-exists the widespread acceptance of adjustable and assumed-size
arrays in the Fortran community.
*Note:* This option does not affect how `DIMENSION X(1)' is treated
if `X' is listed as a dummy argument only *after* the `DIMENSION'
statement (presumably in an `ENTRY' statement). For example,
`-fugly-assumed' has no effect on the following program unit:
SUBROUTINE X
REAL A(1)
RETURN
ENTRY Y(A)
PRINT *, A
END