Notation Used in This Chapter
=============================
(The following information augments or overrides the information in
Section 1.5 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran
language. Chapter 1 of that document otherwise serves as the basis for
the relevant aspects of GNU Fortran.)
In this chapter, "must" denotes a requirement, "may" denotes
permission, and "must not" and "may not" denote prohibition. Terms
such as "might", "should", and "can" generally add little or nothing in
the way of weight to the GNU Fortran language itself, but are used to
explain or illustrate the language.
For example:
``The `FROBNITZ' statement must precede all executable
statements in a program unit, and may not specify any dummy
arguments. It may specify local or common variables and arrays.
Its use should be limited to portions of the program designed to
be non-portable and system-specific, because it might cause the
containing program unit to behave quite differently on different
systems.''
Insofar as the GNU Fortran language is specified, the requirements
and permissions denoted by the above sample statement are limited to
the placement of the statement and the kinds of things it may specify.
The rest of the statement--the content regarding non-portable portions
of the program and the differing behavior of program units containing
the `FROBNITZ' statement--does not pertain the GNU Fortran language
itself. That content offers advice and warnings about the `FROBNITZ'
statement.
_Remember:_ The GNU Fortran language definition specifies both what
constitutes a valid GNU Fortran program and how, given such a program,
a valid GNU Fortran implementation is to interpret that program.
It is _not_ incumbent upon a valid GNU Fortran implementation to
behave in any particular way, any consistent way, or any predictable
way when it is asked to interpret input that is _not_ a valid GNU
Fortran program.
Such input is said to have "undefined" behavior when interpreted by
a valid GNU Fortran implementation, though an implementation may choose
to specify behaviors for some cases of inputs that are not valid GNU
Fortran programs.
Other notation used herein is that of the GNU texinfo format, which
is used to generate printed hardcopy, on-line hypertext (Info), and
on-line HTML versions, all from a single source document. This
notation is used as follows:
* Keywords defined by the GNU Fortran language are shown in
uppercase, as in: `COMMON', `INTEGER', and `BLOCK DATA'.
Note that, in practice, many Fortran programs are written in
lowercase--uppercase is used in this manual as a means to readily
distinguish keywords and sample Fortran-related text from the
prose in this document.
* Portions of actual sample program, input, or output text look like
this: `Actual program text'.
Generally, uppercase is used for all Fortran-specific and
Fortran-related text, though this does not always include literal
text within Fortran code.
For example: `PRINT *, 'My name is Bob''.
* A metasyntactic variable--that is, a name used in this document to
serve as a placeholder for whatever text is used by the user or
programmer--appears as shown in the following example:
"The `INTEGER IVAR' statement specifies that IVAR is a variable or
array of type `INTEGER'."
In the above example, any valid text may be substituted for the
metasyntactic variable IVAR to make the statement apply to a
specific instance, as long as the same text is substituted for
_both_ occurrences of IVAR.
* Ellipses ("...") are used to indicate further text that is either
unimportant or expanded upon further, elsewhere.
* Names of data types are in the style of Fortran 90, in most cases.
Note:Kind Notation, for information on the relationship between
Fortran 90 nomenclature (such as `INTEGER(KIND=1)') and the more
traditional, less portably concise nomenclature (such as
`INTEGER*4').