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:

- ([
*dl*]:[, [*dl*]:]...) *dl*

Is a specification expression indicating the lower bound of the dimension. The expression can have a positive, negative, or zero value. If necessary, the value is converted to integer type.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.

Previous Page Next Page Table of Contents