(j3.2006) (SC22WG5.5403) WG5 straw ballot 8 on Fortran 2008 interpretations

Van Snyder Van.Snyder
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:
  "NOTE 7.33a
    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 mailing list