VMS Help  —  FORTRAN  Statements  INTERFACE  Generic Assignment
  An interface block can be used to define generic assignment.  The
  only procedures allowed in the interface block are subroutines that
  can be referenced as defined assignments.  Statement format for
  initial line in block:

     INTERFACE ASSIGNMENT(=)

  The subroutines within the interface block must have two
  nonoptional arguments, the first with intent OUT or INOUT, and the
  second with intent IN.

  A defined assignment is treated as a reference to a subroutine.
  The left side of the assignment corresponds to the first dummy
  argument of the subroutine; the right side of the assignment
  corresponds to the second argument.

  The ASSIGNMENT keyword extends or redefines an assignment operation
  if both sides of the equal sign are of the same derived type.

  Any procedure reference involving generic assignment must be
  resolvable to one specific procedure; it must be unambiguous.

  EXAMPLES:

    INTERFACE ASSIGNMENT (=)
      SUBROUTINE BIT_TO_NUMERIC (NUM, BIT)
      INTEGER, INTENT(OUT) :: NUM
      LOGICAL, INTENT(IN)  :: BIT(:)
      END SUBROUTINE BIT_TO_NUMERIC

      SUBROUTINE CHAR_TO_STRING (STR, CHAR)
      USE STRING_MODULE                    ! Contains definition
                                           !   of type STRING
      TYPE(STRING), INTENT(OUT) :: STR     ! A variable-length string
      CHARACTER(*), INTENT(IN)  :: CHAR
      END SUBROUTINE  CHAR_TO_STRING
    END  INTERFACE

  The following example shows two equivalent ways to reference
  subroutine BIT_TO_NUMERIC:

    CALL BIT_TO_NUMERIC(X, (NUM(I:J)))
    X = NUM(I:J)

  The following example shows two equivalent ways to reference
  subroutine CHAR_TO_STRING:

    CALL CHAR_TO_STRING(CH, '432C')
    CH = '432C'
Close Help