Should declare dummy arrays as assumed-shape arrays:
INTERFACE
SUBROUTINE gimlet(a,b)
...
END INTERFACE
...
REAL, DIMENSION(40) :: X
REAL, DIMENSION(40,40) :: Y
...
CALL gimlet(X,Y)
CALL gimlet(X(1:39:2),Y(2:4,4:4))
CALL gimlet(X(1:39:2),Y(2:4,4)) ! invalid
END PROGRAM
SUBROUTINE gimlet(a,b)
REAL, INTENT(IN) :: a(:), b(:,:)
...
END SUBROUTINE gimlet
Note:
For more information, click here