! { dg-do run } ! PR26766 Recursive I/O with internal units ! Test case derived from example in PR ! Submitted by Jerry DeLisle program pr26766 implicit none character (len=8) :: str, tmp write (str, '(a)') bar (1234) if (str.ne."abcd") call abort() str = "wxyz" write (str, '(2a4)') foo (1), bar (1) if (str.ne."abcdabcd") call abort() contains function foo (i) result (s) integer, intent(in) :: i character (len=4) :: s, t if (i < 0) then s = "1234" else ! Internal I/O, allowed recursive in f2003, see section 9.11 write (s, '(a)') "abcd" end if end function foo function bar (i) result (s) integer, intent(in) :: i character (len=4) :: s, t if (i < 0) then s = "4567" else write (s, '(a)') foo(i) end if end function bar end program pr26766