From owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org  Mon Dec 22 23:25:20 2014
Return-Path: <owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org>
X-Original-To: sc22wg5-dom8
Delivered-To: sc22wg5-dom8@www.open-std.org
Received: by www.open-std.org (Postfix, from userid 521)
	id 02DD835849D; Mon, 22 Dec 2014 23:25:19 +0100 (CET)
Delivered-To: sc22wg5@open-std.org
Received: from mail.jpl.nasa.gov (sentrion1.jpl.nasa.gov [128.149.139.105])
	by www.open-std.org (Postfix) with ESMTP id 11CD435672C
	for <sc22wg5@open-std.org>; Mon, 22 Dec 2014 23:25:13 +0100 (CET)
Received: from [137.79.7.57] (math.jpl.nasa.gov [137.79.7.57])
	by smtp.jpl.nasa.gov (Sentrion-MTA-4.3.1/Sentrion-MTA-4.3.1) with ESMTP id sBMMPBQn021928
	(using TLSv1/SSLv3 with cipher DHE-RSA-AES128-SHA (128 bits) verified NO)
	for <sc22wg5@open-std.org>; Mon, 22 Dec 2014 14:25:12 -0800
Subject: WG5 straw ballot 8 on Fortran 2008 interpretations
From: Van Snyder <Van.Snyder@jpl.nasa.gov>
Reply-To: Van.Snyder@jpl.nasa.gov
To: sc22wg5 <sc22wg5@open-std.org>
Content-Type: text/plain; charset="ISO-8859-1"
Organization: Yes
Date: Mon, 22 Dec 2014 14:25:10 -0800
Message-ID: <1419287110.19479.108.camel@math.jpl.nasa.gov>
Mime-Version: 1.0
X-Mailer: Evolution 2.32.3 (2.32.3-34.el6) 
Content-Transfer-Encoding: 7bit
X-Source-Sender: Van.Snyder@jpl.nasa.gov
X-AUTH: Authorized
Sender: owner-sc22wg5@open-std.org
Precedence: bulk

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
                    instances
-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



