1! Test unpack1 for character arrays.
2! { dg-do run }
3program main
4  implicit none
5  integer, parameter :: n1 = 3, n2 = 4, nv = 10, slen = 9
6  character (len = slen) :: field
7  character (len = slen), dimension (nv) :: vector
8  logical, dimension (n1, n2) :: mask
9  integer :: i1, i2, i
10
11  field = 'broadside'
12  mask (1, :) = (/ .true., .false., .true., .true. /)
13  mask (2, :) = (/ .true., .false., .false., .false. /)
14  mask (3, :) = (/ .false., .true., .true., .true. /)
15
16  do i = 1, nv
17    vector (i) = 'crespo' // '0123456789'(i:i)
18  end do
19
20  call test (unpack (vector, mask, field))
21contains
22  subroutine test (a)
23    character (len = slen), dimension (:, :) :: a
24
25    if (size (a, 1) .ne. n1) call abort
26    if (size (a, 2) .ne. n2) call abort
27
28    i = 0
29    do i2 = 1, n2
30      do i1 = 1, n1
31        if (mask (i1, i2)) then
32          i = i + 1
33          if (a (i1, i2) .ne. vector (i)) call abort
34        else
35          if (a (i1, i2) .ne. field) call abort
36        end if
37      end do
38    end do
39  end subroutine test
40end program main
41