| ! Test various intrinsics who take a kind argument since Fortran 2003 |
| ! |
| ! { dg-do compile } |
| ! |
| program test |
| integer, parameter :: k = kind(0) |
| logical :: l_array(4,5) |
| character(len=1) :: s |
| character(len=20) :: t |
| |
| l_array = .true. |
| s = "u" |
| t = "bartutugee" |
| |
| call check (count(l_array, kind=k), 20) |
| if (any (count(l_array, 2, kind=k) /= 5)) STOP 1 |
| if (any (count(l_array, kind=k, dim=2) /= 5)) STOP 2 |
| |
| call check (iachar (s, k), 117) |
| call check (iachar (s, kind=k), 117) |
| call check (ichar (s, k), 117) |
| call check (ichar (s, kind=k), 117) |
| |
| if (achar(107) /= achar(107,1)) STOP 3 |
| |
| call check (index (t, s, .true., k), 7) |
| call check (index (t, s, kind=k, back=.false.), 5) |
| |
| if (any (lbound (l_array, kind=k) /= 1)) STOP 4 |
| call check (lbound (l_array, 1), 1) |
| call check (lbound (l_array, 1, kind=k), 1) |
| |
| if (any (ubound (l_array, kind=k) /= (/4, 5/))) STOP 5 |
| call check (ubound (l_array, 1), 4) |
| call check (ubound (l_array, 1, kind=k), 4) |
| |
| call check (len(t, k), 20) |
| call check (len_trim(t, k), 10) |
| |
| call check (scan (t, s, .true., k), 7) |
| call check (scan (t, s, kind=k, back=.false.), 5) |
| |
| call check (size (l_array, 1, kind=k), 4) |
| call check (size (l_array, kind=k), 20) |
| |
| call check (verify (t, s, .true., k), 20) |
| call check (verify (t, s, kind=k, back=.false.), 1) |
| |
| contains |
| |
| subroutine check(x,y) |
| integer, intent(in) :: x, y |
| if (x /= y) STOP 6 |
| end subroutine check |
| |
| end program test |