URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [gfortran.dg/] [char_cshift_2.f90] - Rev 154
Compare with Previous | Blame | View Log
! Test cshift1 for character arrays.
! { dg-do run }
program main
implicit none
integer, parameter :: n1 = 2, n2 = 3, n3 = 4, slen = 3
character (len = slen), dimension (n1, n2, n3) :: a
integer (kind = 1), dimension (2, 4) :: shift1
integer (kind = 2), dimension (2, 4) :: shift2
integer (kind = 4), dimension (2, 4) :: shift3
integer (kind = 8), dimension (2, 4) :: shift4
integer :: i1, i2, i3
do i3 = 1, n3
do i2 = 1, n2
do i1 = 1, n1
a (i1, i2, i3) = 'ab'(i1:i1) // 'cde'(i2:i2) // 'fghi'(i3:i3)
end do
end do
end do
shift1 (1, :) = (/ 4, 11, 19, 20 /)
shift1 (2, :) = (/ 55, 5, 1, 2 /)
shift2 = shift1
shift3 = shift1
shift4 = shift1
call test (cshift (a, shift1, 2))
call test (cshift (a, shift2, 2))
call test (cshift (a, shift3, 2))
call test (cshift (a, shift4, 2))
contains
subroutine test (b)
character (len = slen), dimension (n1, n2, n3) :: b
integer :: i2p
do i3 = 1, n3
do i2 = 1, n2
do i1 = 1, n1
i2p = mod (shift1 (i1, i3) + i2 - 1, n2) + 1
if (b (i1, i2, i3) .ne. a (i1, i2p, i3)) call abort
end do
end do
end do
end subroutine test
end program main