(j3.2006) paper 13-228
Malcolm Cohen
malcolm
Tue Feb 5 19:45:43 EST 2013
Bill Long wrote:
>I'm not convinced the first alternate edit is correct. If the dummy
>argument associated with the pointer function reference is never
>referenced in the procedure, the procedure appears to be still
>conforming.
Not so. Any modification to an entity associated with a dummy argument that
does not have the TARGET or POINTER attribute is required to go through the
dummy argument.
(Think about what happens when some processors use pass-by-reference and some
use copy-in/copy-out: in the first case the modification will happen and be
effective, in the second the modification will be undone on procedure return.)
>Or if the procedure has only one argument and no other
>access to data outside the procedure (no USE or COMMON or host
>association) then the target of the corresponding actual argument
>pointer could be modified by the procedure and still have a conforming
>procedure.
You seem to be thinking it is being modified through that dummy argument, which
was not the intent of my wording "target of the pointer result is modified". I
meant that to imply that it was being modified "other than through that dummy
argument".
I left those words out because I thought it clear enough, this is only
describing the exception not establishing any requirement, and the paragraph is
already quite long, ... but if it's causing confusion we can easily put those
words back in.
>I find the prospect of having programs that were perfectly legal in
>F2003 suddenly breaking to be disconcerting.
Absolutely.
> It is also disturbing to
>make codes that are legal now with F2008 suddenly no longer legal.
Regrettable though it is, it is not that infrequent an occurrence. It usually
doesn't rise to the level of ripping out a whole feature though.
> As Bob says, "no good solutions".
Right, we have to pick the "least worst" one. Opinions may differ as to which
one that is.
There is a "third way", but I thought it even worse so didn't bother to write it
up and make edits. Viz, having a pointer function reference denote a variable
only where these problems cannot arise. But that would not only be a horrible
inconsistency, but one of the prime places for wanting a pointer function
reference to denote a variable was as an actual argument, so I thought that
would be even less popular than the other possible solutions...
Cheers,
--
................................Malcolm Cohen, Nihon NAG, Tokyo.
More information about the J3
mailing list