1! Program to test the shape intrinsic
2program testbounds
3   implicit none
4   real, dimension(:, :), allocatable :: a
5   integer, dimension(2) :: j
6   integer i
7
8   allocate (a(3:8, 6:7))
9
10   j = shape (a);
11   if (any (j .ne. (/ 6, 2 /))) STOP 1
12
13   call test(a)
14contains
15
16subroutine test (a)
17   real, dimension (1:, 1:) :: a
18
19   if (any (shape (a) .ne. (/ 6, 2 /))) STOP 2
20end subroutine
21end program
22
23