A symbolic name consists of one to six alphanumeric
characters, the first of which must be a letter. Some
sequences of characters, such as format edit descriptors
and keywords that uniquely identify certain statements,
for example, GO TO, READ, FORMAT, etc, are not symbolic
names in such occurrences nor do they form the first
characters of symbolic names in such occurrences.

The main program, common blocks,
subprograms, and external procedures
are global entities of an executable program. A symbolic
name that identifies a global entity must not be used to
identify any other global entity in the same executable
program.

The symbolic name of a local entity
identifies that entity in a single program unit. Within
a program unit, a symbolic name that is in one class of
entities local to the program unit must not also be in
another class of entities local to the program unit.
However, a symbolic name that identifies a local entity
may, in a different program unit, identify an entity of
any class that is either local to that program
unit or global to the executable program. A symbolic name
that identifies a global entity in a program unit must not
be used to identify a local entity in that program unit,
except for a common block name and an external function
name (
18.2.1 and
18.2.2).

In a program unit, a symbolic name must not be in more
than one class except as noted in the following paragraphs
of this section. There are no restrictions on the
appearances of the same symbolic name in different program
units of an executable program other than those noted in
this section.

A symbolic name is the name of a
common block if and only if it appears as a block name in
a COMMON statement (
8.3).

A common block name is global to the executable program.

A common block name in a program unit may also be the name
of any local entity other than a constant, intrinsic
function, or a local variable that is also an external
function in a function subprogram. If a name is used for
both a common block and a local entity, the appearance of
that name in any context other than as a common block name
in a COMMON or SAVE statement identifies only the local
entity. Note that an intrinsic function name may be a
common block name in a program unit that does not reference
the intrinsic function.

A symbolic name is the name
of an external function if it meets either of the following
conditions:

The name appears immediately following the word
FUNCTION in a FUNCTION statement or the word ENTRY
in an ENTRY statement within a function subprogram.

It is not an array name, character variable name,
statement function name, intrinsic function name,
dummy argument, or subroutine name, and every
appearance is immediately followed by a left
parenthesis except in a type-statement, in an
EXTERNAL statement, or as an actual argument.

In a function subprogram, the name of a function that
appears immediately after the word FUNCTION in a FUNCTION
statement or
immediately after the word ENTRY in an ENTRY statement
may also be the name of a variable in that subprogram
(
15.5.1). At least one such function name
must be the name of a variable in a function
subprogram.

A symbolic name is the name of a variable
if it meets all of the following conditions:

It does not appear in a PARAMETER, INTRINSIC, or
EXTERNAL statement.

It is not the name of an array, subroutine, main
program, or block data subprogram.

It appears other than as the name of a common block,
the name of an external function in a FUNCTION
statement, or an entry name in an ENTRY statement
in an external function.

It is never immediately followed by a left
parenthesis unless it is immediately preceded by
the word FUNCTION in a FUNCTION statement, is
immediately preceded by the word ENTRY in an ENTRY
statement, or is at the beginning of a character
substring name (
5.7.1).

A variable name in the dummy argument list of a statement
function statement is local to the statement function
statement in which it occurs. Note that the use of a name
that appears in Table 5 as a dummy argument of a statement
function removes it from the class of intrinsic functions.
A variable name that appears as an implied-DO-variable in
a DATA statement is local to the implied-DO list. All
other variable names are local to a program unit.

A statement function dummy argument name may also be the
name of a variable or common block in the program unit.
The appearance of the name in any context other than as
a dummy argument of the statement function identifies the
local variable or common block. The statement function
dummy argument name and local variable name have the same
type and, if of type character, both have the same constant length.

The name of an implied-DO-variable in a DATA statement may
also be the name of a variable or common block in the
program unit. The appearance of the name in any context
other than as an implied-DO-variable in the DATA statement
identifies the local variable or common block. The implied-
DO-variable and the local variable have the same type.

A symbolic name is the name of
a dummy procedure if the name appears in the dummy argument
list of a FUNCTION, SUBROUTINE, or ENTRY statement and
meets one or more of the following conditions:

It appears in an EXTERNAL statement.

It appears immediately following the word CALL in
a CALL statement.

It is not an array name or character variable name,
and every appearance is immediately followed by a
left parenthesis except in a type-statement, in an
EXTERNAL statement, in a CALL statement, as a dummy
argument, as an actual argument, or as a common
block name in a COMMON or SAVE statement.