type t character(len=:), pointer :: p(:) character(len=:), allocatable :: a(:) end type t type(T) :: x character(len=5), target :: y(2) y = ["abc","def"] x%p => y x%a = y print '(">",a,"<")', x%p ! Doesn't print anything print '(">",a,"<")', x%a ! Doesn't print anything print '(">",a,"<")', x%p(1) ! Doesn't print anything print '(">",a,"<")', x%p(2) ! Doesn't print anything print '(">",a,"<")', x%a(1) ! Prints "def " (expected: "abc ") print '(">",a,"<")', x%a(2) ! Prints "def " (okay) end