(j3.2006) Wednesday papers

Malcolm Cohen malcolm
Thu Oct 17 02:01:09 EDT 2013


Something should be said in a note about the possibility that B(n+n)
might produce an array of a different size from B(2*n), or that B(n+n)
might always produce the same size array as B(2*n) even if N changes
rapidly but the processor does the permitted transformation of replacing
n+n by 2*n.

I disagree we need any new note - there is nothing here that is not 
fundamental to the very concept of volatile.  Whether the expression 
containing the volatile reference(s) is used as an array bound, an actual 
arg, a selector, or the right-hand-side of an assignment, etc., it is 
already documented that the value of that variable (and therefore the value 
of the expression) might change between references.


Should "declared prior to the interface body" become "declared prior to
the interface body or accessible in the host scoping unit by host or use

I don't think so.  This only comes into play if it is declared in the host 
scoping unit so further host/use association is not relevant to the 


I have a slight preference for an alternative wording for C583a:

C583a If IMPLICIT NONE with an <implicit-none-spec> of EXTERNAL appears
           within a scoping unit, a procedure referenced in that scoping
unit or
           in a contained subprogram or BLOCK construct shall be explicitly
           declared to have the EXTERNAL attribute or shall have
explicit interface.

There are zero ways of giving an external or dummy procedure an explicit 
interface without simultaneously giving it the EXTERNAL attribute, so this 
boils down to what we have now.


More information about the J3 mailing list