Within a scoping unit, a procedure name is established to be generic
if any of the following is true:
- The scoping unit contains an interface block with that
procedure name.
- The procedure name matches the name of a generic intrinsic
procedure, and it is specified with the INTRINSIC attribute in
that scoping unit.
- The procedure name is established to be generic in a
module, and the scoping unit contains a USE statement making
that procedure name accessible.
- The scoping unit contains no declarations for that
procedure name, but the procedure name is established to be
generic in a host scoping unit.
To resolve a reference to a procedure name established to be
generic, the following rules are used in the order shown:
- If an interface block with that procedure name appears in
one of the following, the reference is to the specific procedure
providing that interface:
- The scoping unit that contains the reference
- A module made accessible by a USE statement in the
scoping unit
The reference must be consistent with one of the specific
interfaces of the interface block.
- If the procedure name is specified with the INTRINSIC
attribute in one of the following, the reference is to that
intrinsic procedure:
- The same scoping unit
- A module made accessible by a USE statement in the
scoping unit
The reference must be consistent with the interface of that
intrinsic procedure.
- If the following is true, the reference is resolved by
applying rules 1 and 2 to the host scoping unit:
- The procedure name is established to be generic in the
host scoping unit
- There is agreement between the scoping unit and the
host scoping unit as to whether the procedure is a function or
subroutine name.
- If none of the preceding rules apply, the reference
must be to the generic intrinsic procedure with that name. The
reference must be consistent with the interface of that intrinsic
procedure.
Previous Page Next Page Table of Contents