1! Program to test the SIZE intrinsics
2program testsize
3   implicit none
4   real, dimension(:, :), allocatable :: a
5   integer, dimension(5) :: j
6   integer, dimension(2, 3) :: b
7   integer i
8
9   if (size (b(2, :), 1) .ne. 3) call abort
10
11   allocate (a(3:8, 5:7))
12
13   ! With one parameter
14   if (size(a) .ne. 18) call abort
15
16   ! With two parameters, assigning to an array
17   j = size(a, 1)
18   if (any (j .ne. (/6, 6, 6, 6, 6/))) call abort
19
20   ! With a variable second parameter
21   i = 2
22   i = size(a, i)
23   if (i .ne. 3) call abort
24
25   call test(a)
26contains
27
28subroutine test (a)
29   real, dimension (1:, 1:) :: a
30   integer i
31
32   i = 2
33   if ((size(a, 1) .ne. 6) .or. (size(a, i) .ne. 3)) call abort
34   if (size (a) .ne. 18 ) call abort
35end subroutine
36end program
37
38