Copyright Digital Equipment Corp. All rights reserved.

EXTERNAL

 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.