(j3.2006) (SC22WG5.5403) WG5 straw ballot 8 on Fortran 2008 interpretations
Mon Dec 22 17:25:10 EST 2014
The following Fortran 2008 interpretations are being balloted:
Yes No Number Title
-C- --- F08/0099 VOLATILE in specification expressions
There is no execution sequence for evaluation of specification
expressions within a <specification-part>. The only requirement is
that the specification expressions are evaluated, in processor-
dependent order, before the first executable construct is executed.
Therefore, one might infer that the value of a volatile variable
that appears more than once in specification expressions could be
required to be copied into an anonymous local variable, and then that
value used throughout elaboration of the specification part. The
answer would thereby be "The program is required to print 'T T'." A
note explaining the reasoning by which the program is not required to
print 'T T' would be helpful:
If a variable that has the VOLATILE attribute appears more than
once in a <specification-part>, its value might be different at each
appearance. For example, if N has the VOLATILE attribute, the
specification expressions N*N and N**2 might have different values."
-Y- --- F08/0100 IMPORT statement and prior explicit declaration
-Y- --- F08/0101 NAMELIST and multiple occurrences of a variable
--- -N- F08/0102 MERGE and polymorphism
I agree with the analysis and answer, but not the edit.
Three lines into the proposed new paragraph, it says "(for both the
declared and dynamic types)". Upon arriving at that statement, one
wonders "Where does it say that?" One might expect that a statement
prefaced with "Because..." ought to have prior supporting normative
specification. The only places that "dynamic" appears in Clause 13
are in the descriptions of EXTENDS_TYPE_OF, MOVE_ALLOC, SAME_TYPE_AS,
and STORAGE_SIZE. The note in the answer shows why it is necessary,
but the reader ought not be required to prove this theorem.
Insert "declared and dynamic" before "type and type parameters" at
[368:24], and in the edit for [368:26].
Further, it does not follow that the result is polymorphic if and only
if TSOURCE and FSOURCE are polymorphic, simply because they are
required to have the same declared and dynamic type and type
parameters. Remove "Because ... types)," from the edit (and
capitalize "the"), leaving only the requirement (not the unsupported
conclusion) "The result is polymorphic if and only if both TSOURCE and
FSOURCE are polymorphic."
-Y- --- F08/0103 Pointers to internal procedures with different host
-Y- --- F08/0104 IEEE Inquiry Functions
-Y- --- F08/0106 MOVE_ALLOC for a remote array
-Y- --- F08/0108 ultimate components and coarrays
-Y- --- F08/0112 STAT= and ERRMSG= in ALLOCATE and DEALLOCATE
-Y- --- F08/0113 Specifiers in image control statements
More information about the J3