The first statement of an interface block. Interface blocks define
explicit interfaces for external or dummy procedures. They can
also be used to define a generic name for procedures, a new
operator for functions, and a new form of assignment for
subroutines. Format:
INTERFACE [spec]
[body]...
[MODULE PROCEDURE nam]...
END INTERFACE [spec]
spec Is one of the following:
A generic name
OPERATOR (op)
The "op" is the defined unary, defined binary,
or extended intrinsic operator being defined.
ASSIGNMENT (=)
A "spec" can only be included in the END INTERFACE
statement if one was provided in the INTERFACE
statement; both "spec"s must be identical.
body Is one or more function or subroutine subprograms.
A function must end with END FUNCTION and a subroutine
must end with END SUBROUTINE.
The subprogram must not contain a statement function
or a DATA, ENTRY or FORMAT statement; an entry name
can be used as a procedure name.
The subprogram can contain a USE statement.
nam Is the name of one or more module procedures that
are accessible in the host. The MODULE PROCEDURE
statement is only allowed if the interface block
specifies a "spec" and has a host that is a module
(or accesses a module by use association).
The characteristics of module procedures are not
given in interface blocks, but are assumed from
the module subprogram definitions.
Interface blocks can appear in the specification part of the
program unit that invokes the external or dummy procedure.
The characteristics specified for the external or dummy procedure
must be consistent with those specified in the procedure's
definition.
An interface block must not appear in a block data program unit.
An interface block comprises its own scoping unit, and does not
inherit anything from its host through host association.
A procedure must not have more than one explicit interface in a
given scoping unit.
For more information, see the HP Fortran for OpenVMS Language
Reference Manual.
EXAMPLES:
The following example shows a simple procedure interface block with
no generic specification:
SUBROUTINE SUB_B (B, FB)
REAL B
...
INTERFACE
FUNCTION FB (GN)
REAL FB, GN
END FUNCTION
END INTERFACE
Additional Information:
explode
extract