The compiler gives an error in the following code. But the declaration of variable b is valid Fortran 90 syntax.
program anon
integer :: i, j, prototype(2,2)
integer, parameter, dimension(2,2) :: a = reshape((/1, 2, 3, 4/), (/2,2/))
integer, parameter, dimension(2,2) :: b = reshape((/1, 2, 3, 4/), shape(prototype))
do i=1, 2
print *, (a(i,j), j=1,2)
end do
do i=1, 2
print *, (b(i,j), j=1,2)
end do
end program anon