! Program to test the upper and lower bound intrinsics program testbounds implicit none real, dimension(:, :), allocatable :: a integer, dimension(5) :: j integer i ! Check compile time simplification if (lbound(j,1).ne.1 .or. ubound(j,1).ne.5) STOP 1 allocate (a(3:8, 6:7)) ! With one parameter j = 0; j(3:4) = ubound(a) if (j(3) .ne. 8) STOP 1 if (j(4) .ne. 7) STOP 2 ! With two parameters, assigning to an array j = lbound(a, 1) if ((j(1) .ne. 3) .or. (j(5) .ne. 3)) STOP 3 ! With a variable second parameter i = 2 i = lbound(a, i) if (i .ne. 6) STOP 4 call test(a) contains subroutine test (a) real, dimension (1:, 1:) :: a integer i i = 2 if ((ubound(a, 1) .ne. 6) .or. (ubound(a, i) .ne. 2)) STOP 5 end subroutine end program