The following program assigns an array, but with too few dimensions. The program prints a 1 and then some nonsense number depending upon the compiler options. (If the array is declared in a module and compiled using only /LGO, the program will print two 1s.) It would be helpful if the compiler could pick this up as a programming error, which I assume it is.
PROGRAM p
INTEGER, ALLOCATABLE :: i(:,:)
ALLOCATE (i(1))
PRINT*, SHAPE(i)
END PROGRAM p