Consider this example of fix-sized and allocatable array
case I: Fix-sized array
Case II: Allocatable array
One important thing to remark is that if you want to declare an array inside a subroutine for a fixed-dimension array argument, you cannot use the dimension(:,:) syntax. The dimension(:,:) syntax is used for assumed-shape arrays, which are typically used with allocatable arrays or arrays passed from the calling program where the dimensions are not fixed within the subroutine.
For fixed-dimension arrays, you should explicitly declare the dimensions in the subroutine. Here’s how you can do it: