1! PR fortran/39865 2! { dg-do run } 3 4subroutine f1 (a) 5 character(len=1) :: a(7:) 6 character(len=12) :: b 7 character(len=1) :: c(2:10) 8 write (b, a) 'Hell', 'o wo', 'rld!' 9 if (b .ne. 'Hello world!') call abort 10 write (b, a(:)) 'hell', 'o Wo', 'rld!' 11 if (b .ne. 'hello World!') call abort 12 write (b, a(8:)) 'Hell', 'o wo', 'rld!' 13 if (b .ne. 'Hello world!') call abort 14 c(2) = ' ' 15 c(3) = '(' 16 c(4) = '3' 17 c(5) = 'A' 18 c(6) = '4' 19 c(7) = ')' 20 write (b, c) 'hell', 'o Wo', 'rld!' 21 if (b .ne. 'hello World!') call abort 22 write (b, c(:)) 'Hell', 'o wo', 'rld!' 23 if (b .ne. 'Hello world!') call abort 24 write (b, c(3:)) 'hell', 'o Wo', 'rld!' 25 if (b .ne. 'hello World!') call abort 26end subroutine f1 27 28subroutine f2 (a) 29 character(len=1) :: a(10:,20:) 30 character(len=12) :: b 31 write (b, a) 'Hell', 'o wo', 'rld!' 32 if (b .ne. 'Hello world!') call abort 33 write (b, a) 'hell', 'o Wo', 'rld!' 34 if (b .ne. 'hello World!') call abort 35end subroutine f2 36 37function f3 () 38 character(len=1) :: f3(5) 39 f3(1) = '(' 40 f3(2) = '3' 41 f3(3) = 'A' 42 f3(4) = '4' 43 f3(5) = ')' 44end function f3 45 46 interface 47 subroutine f1 (a) 48 character(len=1) :: a(:) 49 end 50 end interface 51 interface 52 subroutine f2 (a) 53 character(len=1) :: a(:,:) 54 end 55 end interface 56 interface 57 function f3 () 58 character(len=1) :: f3(5) 59 end 60 end interface 61 integer :: i, j 62 character(len=1) :: e (6, 7:9), f (3,2), g (10) 63 character(len=12) :: b 64 e = 'X' 65 e(2,8) = ' ' 66 e(3,8) = '(' 67 e(4,8) = '3' 68 e(2,9) = 'A' 69 e(3,9) = '4' 70 e(4,9) = ')' 71 f = e(2:4,8:9) 72 g = 'X' 73 g(2) = ' ' 74 g(3) = '(' 75 g(4) = '3' 76 g(5) = 'A' 77 g(6) = '4' 78 g(7) = ')' 79 call f1 (g(2:7)) 80 call f2 (f) 81 call f2 (e(2:4,8:9)) 82 write (b, f3 ()) 'Hell', 'o wo', 'rld!' 83 if (b .ne. 'Hello world!') call abort 84end 85