! PR 92482 ! { dg-do run } ! ! TS 29113 ! 8.7 Interoperability of procedures and procedure interfaces ! ! If a dummy argument in an interoperable interface is of type ! CHARACTER and is allocatable or a pointer, its character length shall ! be deferred. program testit use iso_c_binding character (kind=C_CHAR, len=:), allocatable :: aa character (kind=C_CHAR, len=:), pointer :: pp pp => NULL () call frobf (aa, pp) if (.not. allocated (aa)) stop 101 if (aa .ne. 'foo') stop 102 if (.not. associated (pp)) stop 103 if (pp .ne. 'bar') stop 104 pp => NULL () call frobc (aa, pp) if (.not. allocated (aa)) stop 101 if (aa .ne. 'frog') stop 102 if (.not. associated (pp)) stop 103 if (pp .ne. 'toad') stop 104 contains subroutine frobf (a, p) use iso_c_binding character (kind=C_CHAR, len=:), allocatable :: a character (kind=C_CHAR, len=:), pointer :: p allocate (character(len=3) :: p) a = 'foo' p = 'bar' end subroutine subroutine frobc (a, p) bind (c) use iso_c_binding character (kind=C_CHAR, len=:), allocatable :: a character (kind=C_CHAR, len=:), pointer :: p allocate (character(len=4) :: p) a = 'frog' p = 'toad' end subroutine end program