module Mod implicit none TYPE derivedtype integer::i procedure(procInterface),POINTER,PASS::f=> NULL() END TYPE derivedtype ABSTRACT INTERFACE subroutine procInterface(A) import derivedtype class(derivedtype),intent(inout)::A end subroutine END INTERFACE contains subroutine proc1(A) implicit none type(derivedType),intent(inout)::A A%i=999 end subroutine end module Mod program Test1 use Mod implicit none type(derivedtype)::T T%i=123 T%f => proc1 call T%f() print*,T%i end program