An assumed-shape array is a dummy argument array that assumes the shape of its associated actual argument array. An assumed-shape specification takes the following form: [lower-bound]: [,[lower-bound]:] ... The lower bound is a specification expression. If the lower bound is not specified, it is assumed to be 1. The rank of the array is the number of colons (:) specified. The value of the upper bound is the extent of the corresponding dimension of the associated actual argument array + lower-bound - 1. The following is an example of an assumed-shape specification: INTERFACE SUBROUTINE SUB(M) INTEGER M(:, 1:, 5:) END SUBROUTINE END INTERFACE INTEGER L(20, 5:25, 10) CALL SUB(L) SUBROUTINE SUB(M) INTEGER M(:, 1:, 5:) END SUBROUTINE Array M has the same extents as array L, but array M has bounds (1:20, 1:21, 5:14). Note that an explicit interface is required when calling a routine that expects an assumed-shape or pointer array.