## 8.9.3 Defining Generic Names for Procedures

An interface block can be used to specify a generic name to reference all of the procedures within the interface block.

The initial line for such an interface block takes the following form:

  INTERFACE generic-name
  generic-name
  Is the generic name. It can be the same as any of the procedure names in the interface block, or the same as any accessible generic name (including a generic intrinsic name).

This kind of interface block can be used to extend or redefine a generic intrinsic procedure.

The procedures that are given the generic name must be the same kind of subprogram: all must be functions, or all must be subroutines.

Any procedure reference involving a generic procedure name must be resolvable to one specific procedure; it must be unambiguous. For more information, see Section 16.2.

The following is an example of a procedure interface block defining a generic name:

    INTERFACE GROUP_SUBS
      SUBROUTINE INTEGER_SUB (A, B)
        INTEGER, INTENT(INOUT) :: A, B
      END SUBROUTINE INTEGER_SUB

      SUBROUTINE REAL_SUB (A, B)
        REAL, INTENT(INOUT) :: A, B
      END SUBROUTINE REAL_SUB

      SUBROUTINE COMPLEX_SUB (A, B)
        COMPLEX, INTENT(INOUT) :: A, B
      END SUBROUTINE COMPLEX_SUB
    END INTERFACE

The three subroutines can be referenced by their individual specific names or by the group name GROUP_SUBS.

The following example shows a reference to INTEGER_SUB:

    INTEGER V1, V2
    CALL GROUP_SUBS (V1, V2)

For More Information:

For details on interface blocks, see Section 8.9.2.

Previous Page Next Page Table of Contents