| ! PR fortran/39865 |
| ! { dg-do run } |
| |
| subroutine f1 (a) |
| character(len=1) :: a(7:) |
| character(len=12) :: b |
| character(len=1) :: c(2:10) |
| write (b, a) 'Hell', 'o wo', 'rld!' |
| if (b .ne. 'Hello world!') STOP 1 |
| write (b, a(:)) 'hell', 'o Wo', 'rld!' |
| if (b .ne. 'hello World!') STOP 2 |
| write (b, a(8:)) 'Hell', 'o wo', 'rld!' |
| if (b .ne. 'Hello world!') STOP 3 |
| c(2) = ' ' |
| c(3) = '(' |
| c(4) = '3' |
| c(5) = 'A' |
| c(6) = '4' |
| c(7) = ')' |
| write (b, c) 'hell', 'o Wo', 'rld!' |
| if (b .ne. 'hello World!') STOP 4 |
| write (b, c(:)) 'Hell', 'o wo', 'rld!' |
| if (b .ne. 'Hello world!') STOP 5 |
| write (b, c(3:)) 'hell', 'o Wo', 'rld!' |
| if (b .ne. 'hello World!') STOP 6 |
| end subroutine f1 |
| |
| subroutine f2 (a) |
| character(len=1) :: a(10:,20:) |
| character(len=12) :: b |
| write (b, a) 'Hell', 'o wo', 'rld!' |
| if (b .ne. 'Hello world!') STOP 7 |
| write (b, a) 'hell', 'o Wo', 'rld!' |
| if (b .ne. 'hello World!') STOP 8 |
| end subroutine f2 |
| |
| function f3 () |
| character(len=1) :: f3(5) |
| f3(1) = '(' |
| f3(2) = '3' |
| f3(3) = 'A' |
| f3(4) = '4' |
| f3(5) = ')' |
| end function f3 |
| |
| interface |
| subroutine f1 (a) |
| character(len=1) :: a(:) |
| end |
| end interface |
| interface |
| subroutine f2 (a) |
| character(len=1) :: a(:,:) |
| end |
| end interface |
| interface |
| function f3 () |
| character(len=1) :: f3(5) |
| end |
| end interface |
| integer :: i, j |
| character(len=1) :: e (6, 7:9), f (3,2), g (10) |
| character(len=12) :: b |
| e = 'X' |
| e(2,8) = ' ' |
| e(3,8) = '(' |
| e(4,8) = '3' |
| e(2,9) = 'A' |
| e(3,9) = '4' |
| e(4,9) = ')' |
| f = e(2:4,8:9) |
| g = 'X' |
| g(2) = ' ' |
| g(3) = '(' |
| g(4) = '3' |
| g(5) = 'A' |
| g(6) = '4' |
| g(7) = ')' |
| call f1 (g(2:7)) |
| call f2 (f) |
| call f2 (e(2:4,8:9)) |
| write (b, f3 ()) 'Hell', 'o wo', 'rld!' |
| if (b .ne. 'Hello world!') STOP 9 |
| end |