MODULE mod_1 TYPE,ABSTRACT:: abstract_type INTEGER:: i CONTAINS END TYPE abstract_type TYPE,EXTENDS(abstract_type):: extended_type INTEGER:: j CONTAINS END TYPE extended_type CONTAINS SUBROUTINE f2(t) CLASS(abstract_type),POINTER,intent(in)::t PRINT*,"f2 executed" END SUBROUTINE f2 END MODULE mod_1 ! Main program PROGRAM MAIN USE mod_1 IMPLICIT NONE class(extended_type),POINTER::t CALL f2(t) END PROGRAM MAIN