| ! REPEAT intrinsic |
| ! |
| ! { dg-do run } |
| subroutine foo(i, j, s, t) |
| implicit none |
| integer, intent(in) :: i, j |
| character(len=i), intent(in) :: s |
| character(len=i*j), intent(in) :: t |
| |
| if (repeat(s,j) /= t) STOP 1 |
| call bar(j,s,t) |
| end subroutine foo |
| |
| subroutine bar(j, s, t) |
| implicit none |
| integer, intent(in) :: j |
| character(len=*), intent(in) :: s |
| character(len=len(s)*j), intent(in) :: t |
| |
| if (repeat(s,j) /= t) STOP 2 |
| end subroutine bar |
| |
| program test |
| implicit none |
| character(len=0), parameter :: s0 = "" |
| character(len=1), parameter :: s1 = "a" |
| character(len=2), parameter :: s2 = "ab" |
| character(len=0) :: t0 |
| character(len=1) :: t1 |
| character(len=2) :: t2 |
| integer :: i |
| |
| t0 = "" |
| t1 = "a" |
| t2 = "ab" |
| |
| if (repeat(t0, 0) /= "") STOP 3 |
| if (repeat(t1, 0) /= "") STOP 4 |
| if (repeat(t2, 0) /= "") STOP 5 |
| if (repeat(t0, 1) /= "") STOP 6 |
| if (repeat(t1, 1) /= "a") STOP 7 |
| if (repeat(t2, 1) /= "ab") STOP 8 |
| if (repeat(t0, 2) /= "") STOP 9 |
| if (repeat(t1, 2) /= "aa") STOP 10 |
| if (repeat(t2, 2) /= "abab") STOP 11 |
| |
| if (repeat(s0, 0) /= "") STOP 12 |
| if (repeat(s1, 0) /= "") STOP 13 |
| if (repeat(s2, 0) /= "") STOP 14 |
| if (repeat(s0, 1) /= "") STOP 15 |
| if (repeat(s1, 1) /= "a") STOP 16 |
| if (repeat(s2, 1) /= "ab") STOP 17 |
| if (repeat(s0, 2) /= "") STOP 18 |
| if (repeat(s1, 2) /= "aa") STOP 19 |
| if (repeat(s2, 2) /= "abab") STOP 20 |
| |
| i = 0 |
| if (repeat(t0, i) /= "") STOP 21 |
| if (repeat(t1, i) /= "") STOP 22 |
| if (repeat(t2, i) /= "") STOP 23 |
| i = 1 |
| if (repeat(t0, i) /= "") STOP 24 |
| if (repeat(t1, i) /= "a") STOP 25 |
| if (repeat(t2, i) /= "ab") STOP 26 |
| i = 2 |
| if (repeat(t0, i) /= "") STOP 27 |
| if (repeat(t1, i) /= "aa") STOP 28 |
| if (repeat(t2, i) /= "abab") STOP 29 |
| |
| i = 0 |
| if (repeat(s0, i) /= "") STOP 30 |
| if (repeat(s1, i) /= "") STOP 31 |
| if (repeat(s2, i) /= "") STOP 32 |
| i = 1 |
| if (repeat(s0, i) /= "") STOP 33 |
| if (repeat(s1, i) /= "a") STOP 34 |
| if (repeat(s2, i) /= "ab") STOP 35 |
| i = 2 |
| if (repeat(s0, i) /= "") STOP 36 |
| if (repeat(s1, i) /= "aa") STOP 37 |
| if (repeat(s2, i) /= "abab") STOP 38 |
| |
| call foo(0,0,"","") |
| call foo(0,1,"","") |
| call foo(0,2,"","") |
| call foo(1,0,"a","") |
| call foo(1,1,"a","a") |
| call foo(1,2,"a","aa") |
| call foo(2,0,"ab","") |
| call foo(2,1,"ab","ab") |
| call foo(2,2,"ab","abab") |
| end program test |