To: J3 09-140 From: Craig Rasmussen Subject: Dimension(**) syntax to correct oversight in interop TR Date: 2009 February 09 References: WG5/N1761 Discussion One of the major problems in constructing a set of sensible MPI interfaces for Fortran is the combinatorial explosion due to combinations of TKR (type, kind, and rank). This problem is made worse by F2008 with up to 15 possible dimensions. Changes to Fortran in N1761 will solve this problem for Fortran users who wish access to dope vectors. This is provided through the TYPE(*), DIMENSION(..) syntax. However, users (library implementors) who don't want the added complexity of processing dope vectors still have the explosion of interfaces due to rank. For example, the following interface declaration INTERFACE MPI_Recv subroutine MPI_Recv_wrapper(buf, count, datatype, ...) TYPE(*), DIMENSION(*), intent(out) :: buf ... end subroutine END INTERFACE won't allow assumed-shape or assumed-size actuals of rank greater than one. To overcome this oversight in N1761, the following additional syntax is proposed: TYPE(*), DIMENSION(**) consistent with the DIMENSION(..) syntax. Semantically, this would allow any actual of any type, kind, and rank (greater than or equal to one) to be matched for the purpose of generic resolution.