This is simply unworkable. With the following call:
CALL MPI_WAIT(REQUEST,STATUS)
the assumption is that STATUS is something the user has declared
and at entry it contains undefined bits. The code which carries out
the MPI_WAIT has access to the address of STATUS because "no real
compiler would use copy in/copy out". The MPI_WAIT code could look
at the address of the argument it was passed and recognize it had
either a real MPI_STATUS or had the magic argument, MPI_STATUS_IGNORE.
(MPI-1 did not have MPI_STATUS_IGNORE so consider MPI_BOTTOM if you
prefer. A send or receive buffer also has undefined bits at entry.)
As long as the bit content of an argument which can either be the real
thing or a magic name is undefined, there is no cookie that can be
used as the recognizable content of the magic object. Some trick
inside the implementation code is needed. The reliable trick in
F77 depends on getting a recognizable address when passed MPI_BOTTOM
and assuming any address that did not match was a real buffer.
Once the door is open to F90's increased use of copying it may no
longer safe to assume that the address of the MPI_STATUSES_IGNORE
pretend array can be recognized. As far as I can see, as long as
the implementation can count on getting these arguments in the form
"addresses of the actual argument" rather than as addresses of copy
temps it will not have any reason to view an MPI_STATUS_IGNORE as
anything but an OUT.
If ever it becomes impossible to count on pass by "address of the
actual argument" then MPI will be "up you know what creek without
a paddle" and it will not help that the MPI_STATUS_IGNORE argument
is identified as an INOUT rather than an OUT.
The MPI and Fortran saga will continue.
Dick
Dick Treumann IBM RS/6000 Division
(Internet) treumann@pok.ibm.com Poughkeepsie, NY
(VNET) TREUMANN at KGNVMC Tel: (914) 433-7846
(internal) treumann@windsurf.pok.ibm.com Fax: (914) 433-8363