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.