Statement: Defines explicit interfaces for external or dummy procedures. It can also be used to define a generic name for procedures, a new operator for functions, and a new form of assignment for subroutines.
Defines a generic operator (op). It can be a defined unary, defined binary, or extended intrinsic operator. For information on defined operators, see Program Units and Procedures.
Defines generic assignment. For information on defined assignment, see Assignment - Defined Assignment.
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.
The characteristics of module procedures are not given in interface blocks, but are assumed from the module subprogram definitions.
Rules and Behavior
Interface blocks can appear in the specification part of the program unit that invokes the external or dummy procedure.
A generic-spec can only appear in the END INTERFACE statement (a Fortran 95 feature) if one appears in the INTERFACE statement; they must be identical.
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.
Internal, module, and intrinsic procedures are all considered to have explicit interfaces. External procedures have implicit interfaces by default; when you specify an interface block for them, their interface becomes explicit. A procedure must not have more than one explicit interface in a given scoping unit. This means that you cannot include internal, module, or intrinsic procedures in an interface block, unless you want to define a generic name for them.
A interface block containing generic-spec specifies a generic interface for the following procedures:
Any generic name, defined operator, or equals symbol that appears is a generic identifier for all the procedures in the interface block. For the rules on how any two procedures with the same generic identifier must differ, see Unambiguous Generic Procedure References.
The module procedures must be accessible by a USE statement.
To make an interface block available to multiple program units (through a USE statement), place the interface block in a module.
The following rules apply to interface blocks containing pure procedures:
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
See Also: CALL, FUNCTION, MODULE, MODULE PROCEDURE, SUBROUTINE, PURE, Procedure Interfaces, Use and Host Association, Determining When Procedures Require Explicit Interfaces, Defining Generic Names for Procedures, Defining Generic Operators, Defining Generic Assignment
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
The following shows another example:
!An interface to an external subroutine SUB1 with header: !SUBROUTINE SUB1(I1,I2,R1,R2) !INTEGER I1,I2 !REAL R1,R2 INTERFACE SUBROUTINE SUB1(int1,int2,real1,real2) INTEGER int1,int2 REAL real1,real2 END SUBROUTINE SUB1 END INTERFACE INTEGER int . . .