  PROGRAM main
    IMPLICIT NONE

    INTERFACE my_function
      SUBROUTINE f1(x)
        integer :: x
      END SUBROUTINE

      SUBROUTINE f2(x)
        real :: x
      END SUBROUTINE

      SUBROUTINE f3(x, y)
        integer  :: x
        real     :: y
      END SUBROUTINE
    END INTERFACE

    INTEGER i
    REAL    r

    CALL my_function(i)
    CALL my_function(r)
    CALL my_function(i,r)

  END

  SUBROUTINE f1(x)
    IMPLICIT NONE
 
    INTEGER x

    print *, "Called f1(x)"
    RETURN
  END

  SUBROUTINE f2(x)
    IMPLICIT NONE
 
    real x

    print *, "Called f2(x)"
    RETURN
  END

  SUBROUTINE f3(x,y)
    IMPLICIT NONE
 
    INTEGER x
    real y

    print *, "Called f3(x,y)"
    RETURN
  END



