! { dg-do run } | |
! { dg-shouldfail "Dim argument incorrect in SUM intrinsic: is 5, should be between 1 and 2" } | |
program summation | |
integer, parameter :: n1=5, n2=7 | |
integer, dimension(1:n1,1:n2) :: arr | |
integer, dimension(1:n1) :: r2 | |
integer, dimension(1:n2) :: r1 | |
integer :: i,j | |
character(len=80) :: c1, c2 | |
character(len=50) :: fmt = '(10I5)' | |
do j=1,n2 | |
do i=1,n1 | |
arr(i,j) = i+j*10 | |
end do | |
end do | |
r1 = sum(arr,dim=1) | |
write (unit=c2, fmt=fmt) r1 | |
call print_sum(1,c1) | |
if (c1 /= c2) STOP 1 | |
r2 = sum(arr,dim=2) | |
write (unit=c2, fmt=fmt) r2 | |
call print_sum(2,c1) | |
if (c1 /= c2) STOP 2 | |
call print_sum(5,c1) | |
contains | |
subroutine print_sum(d, c) | |
integer, intent(in) :: d | |
character(len=80), intent(out) :: c | |
write (unit=c, fmt=fmt) sum(arr,dim=d) | |
end subroutine | |
end |