When a procedure is referenced, it must have an explicit interface in the following cases:
If the procedure has a dummy argument that is one of the following:
A object that has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET, VALUE, or VOLATILE attribute
An assumed-shape array
A polymorphic object (an object declared with a CLASS statement)
A coarray (an object declared with a CODIMENSION attribute or statement)
If the procedure has any of the following:
A result that is an array, or a pointer, or is allocatable (functions only)
A result whose length is neither assumed nor a constant (character functions only)
If a reference to the procedure appears as follows:
With an argument keyword
As a reference by its generic name
As a defined assignment (subroutines only)
In an expression as a defined operator (functions only)
In a context that requires it to be pure
If the procedure is elemental
If the procedure has the BIND attribute
Statement functions do not require an explicit interface.
Copyright © 1996-2011, Intel Corporation. All rights reserved.