1! PR 92482 2! { dg-do execute} 3! 4! TS 29113 5! 8.7 Interoperability of procedures and procedure interfaces 6! 7! If a dummy argument in an interoperable interface is of type 8! CHARACTER and is allocatable or a pointer, its character length shall 9! be deferred. 10 11program testit 12 use iso_c_binding 13 14 character (kind=C_CHAR, len=:), allocatable :: aa 15 character (kind=C_CHAR, len=:), pointer :: pp 16 17 18 pp => NULL () 19 20 call frobf (aa, pp) 21 if (.not. allocated (aa)) stop 101 22 if (aa .ne. 'foo') stop 102 23 if (.not. associated (pp)) stop 103 24 if (pp .ne. 'bar') stop 104 25 26 pp => NULL () 27 28 call frobc (aa, pp) 29 if (.not. allocated (aa)) stop 101 30 if (aa .ne. 'frog') stop 102 31 if (.not. associated (pp)) stop 103 32 if (pp .ne. 'toad') stop 104 33 34 35 contains 36 37 subroutine frobf (a, p) 38 use iso_c_binding 39 character (kind=C_CHAR, len=:), allocatable :: a 40 character (kind=C_CHAR, len=:), pointer :: p 41 allocate (character(len=3) :: p) 42 a = 'foo' 43 p = 'bar' 44 end subroutine 45 46 subroutine frobc (a, p) bind (c) 47 use iso_c_binding 48 character (kind=C_CHAR, len=:), allocatable :: a 49 character (kind=C_CHAR, len=:), pointer :: p 50 allocate (character(len=4) :: p) 51 a = 'frog' 52 p = 'toad' 53 end subroutine 54 55end program 56