Allows an external or dummy procedure to be used as an actual
argument. (To specify intrinsic procedures as actual arguments,
use the INTRINSIC statement.)
The EXTERNAL attribute can be specified in a type declaration
statement or an EXTERNAL statement, and takes one of the following
forms:
Type Declaration Statement:
type [att-ls,] EXTERNAL [,att-ls] :: v[,v]...
Statement:
EXTERNAL v [,v]...
type Is a data type specifier.
att-ls Is an optional list of attribute specifiers.
v Is the symbolic name of a user-supplied subprogram,
or the name of a dummy argument associated with the
name of a subprogram. If you name an intrinsic
subprogram, that name becomes disassociated from
the intrinsic subprogram and is assumed to be the
name of an external object.
You must use EXTERNAL statements in the following cases:
- To identify subprogram or entry point names passed as actual
arguments
- To identify a block data program unit that will reside in a
library module not explicitly referenced at link time.
You do not need to use an EXTERNAL statement to identify a
subprogram or entry point name used as the object of a CALL
statement or function reference; these names are recognized as
external implicitly.
The EXTERNAL attribute is compatible with the OPTIONAL, PRIVATE,
and PUBLIC attributes.