Hi Calblesb,
It’s because assumed shaped arrays need the F90 descriptor passed with it since the callee needs to know the shape at run time. Without an interface, the caller must use F77 calling conventions and only a pointer to the array is passed.
The requirement can be found in section 12.3.1.1. of the F2003 standard. Note 2b.
22 12.3.1.1 Explicit interface
23 A procedure other than a statement function shall have an explicit interface if it is referenced and
24 (1) A reference to the procedure appears
25 (a) With an argument keyword (12.4.1),
26 (b) As a reference by its generic name (12.3.2.1),
27 (c) As a defined assignment (subroutines only),
28 (d) In an expression as a defined operator (functions only), or
29 (e) In a context that requires it to be pure,
30 (2) The procedure has a dummy argument that
31 (a) has the ALLOCATABLE, ASYNCHRONOUS, OPTIONAL, POINTER, TARGET,
32 VALUE, or VOLATILE attribute,
33 (b) is an assumed-shape array,
34 (c) is of a parameterized derived type, or
35 (d) is polymorphic,
1 (3) The procedure has a result that
2 (a) is an array,
3 (b) is a pointer or is allocatable, or
4 (c) has a nonassumed type parameter value that is not an initialization expression,
5 (4) The procedure is elemental, or
6 (5) The procedure has the BIND attribute.
If you have Fortran 95/2003 Explained, see section 6.3.
Hope this clarifies things,
Mat