1! Test reshape for character arrays.
2! { dg-do run }
3program main
4  implicit none
5  integer, parameter :: n = 20, slen = 9
6  character (len = slen), dimension (n) :: a, pad
7  integer, dimension (3) :: shape, order
8  integer :: i
9
10  do i = 1, n
11    a (i) = 'abcdefghijklmnopqrstuvwxyz'(i:i+6)
12    pad (i) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'(i:i+6)
13  end do
14
15  shape = (/ 4, 6, 5 /)
16  order = (/ 3, 1, 2 /)
17  call test (reshape (a, shape, pad, order))
18contains
19  subroutine test (b)
20    character (len = slen), dimension (:, :, :) :: b
21    integer :: i1, i2, i3, ai, padi
22
23    do i = 1, 3
24      if (size (b, i) .ne. shape (i)) call abort
25    end do
26    ai = 0
27    padi = 0
28    do i2 = 1, shape (2)
29      do i1 = 1, shape (1)
30        do i3 = 1, shape (3)
31          if (ai .lt. n) then
32            ai = ai + 1
33            if (b (i1, i2, i3) .ne. a (ai)) call abort
34          else
35            padi = padi + 1
36            if (padi .gt. n) padi = 1
37            if (b (i1, i2, i3) .ne. pad (padi)) call abort
38          end if
39        end do
40      end do
41    end do
42  end subroutine test
43end program main
44