From johnreid@maths.anu.edu.au Mon Apr  3 21:42:00 1995
Received: from cain.anu.edu.au by dkuug.dk with SMTP id AA28150
  (5.65c8/IDA-1.4.4j for <sc22wg5@dkuug.dk>); Mon, 3 Apr 1995 03:43:30 +0200
Received: by cain.anu.edu.au id AA03904
  (5.65c/IDA-1.4.4 for sc22wg5@dkuug.dk); Mon, 3 Apr 1995 11:42:00 +1000
Date: Mon, 3 Apr 1995 11:42:00 +1000
From: "John.Reid" <John.Reid@maths.anu.edu.au>
Message-Id: <199504030142.AA03904@cain.anu.edu.au>
To: mellis@vax.ox.ac.uk
Subject: Comments on 007
Cc: sc22wg5@dkuug.dk
X-Charset: ASCII
X-Char-Esc: 29


Miles,
      Will you please put these comments on the table at Tokyo?

        Thanks,
                     John.

.........................................................................

6:26. Replace '90 and largely unused' by '77 and largely unused in Fortran 90'.
6:30. Replace '90' by '77'.
[It is important to catch the notion that deletion takes two revisions.]

110:39. Delete final '...'   [There should be only one unmasked elsewhere.]

111:4. Tabbing needs correction. 

111:8.  Replace by
  Constraint: A <where-assignment-stmt> that is a defined assignment shall 
              be elemental. 
[The old wording was OK when we did not have elemental defined assignments.]

111:33-36. Replace by:
   Upon execution of a <masked-elsewhere-stmt> (also called a masked
   ELSEWHERE statement), the following actions take place in sequence:
   (1) The control mask is established to have the value of the pending
       control mask.
   (2) The pending control mask is established to have the value  
       (control mask).AND.(.NOT.<mask-expr>).
   (3) The control mask is established to have the value  
       (control mask).AND.<mask-expr>.
   The <mask-expr> is evaluated only once.
[It considerably simplifies the text on the next page if it is
always the control mask that does the masking. Also, it makes  the text
on 116:21 correct.]

112:24-25. Delete 'by the control mask or the pending control mask, if any'.
112:28-30. Replace by 'the <expr>, <variable>, or <mask-expr>'.
112:34-36. Delete from 'in a' to end of sentence.
112:38. Delete 'by the control mask or the pending control mask '.

113:10-11. Replace 'evaluation ... targets in' by 'execution of
assignment and pointer'. [The present text is wrong because it is
restricted to assignment statements.]

211:46. After 'PURE' add 'or ELEMENTAL'. 
[See 216:29-30, which says that PURE is implied by ELEMENTAL.]

214:35. Replace 
'A pure procedure is a procedure that has no side effects'
 by 
'A non-intrinsic procedure is pure if it is defined with the
<prefix-spec> PURE or ELEMENTAL or is an internal procedure whose host
is pure.
    A pure procedure has no side effects'
[I do not understand how you can have syntax constraints, such as that 
at the bottom of page 214, unless there is explicit syntax to specify
that the procedure is pure.]

214:42. Replace 'R2116-R1201' by 'R2116-R1220' and 'R2121-R1201' 
by 'R2121-R1224'.

215:10. Delete 'and that interface shall specify the PURE keyword'.
[This is inconsistent with 216:29-30, which says that PURE is implied
by ELEMENTAL. Also, it seems very fussy in the case of a pure procedure
invoking one of its own internal procedures to require PURE in that
procedure definition. No restriction of this kind is needed in a
interface block in view of the general rules on consistency of
interfaces.]

216:32. Replace 'R2116-R1201' by 'R2116-R1220' and 'R2121-R1201' 
by 'R2121-R1224'.

217:18-21. Replace by  
     In a reference to the intrinsic subroutine MVBITS, the actual
     arguments corresponding to the TO and FROM dummy arguments may be
     the same variable. Apart from this, the actual arguments in a
     reference to an elemental subroutine must satisfy the restrictions
     of 12.4.1.6.
[Use of the term "storage association" is misleading to the reader
since it suggests common and equivalence, but this problem may occur
through pointer or argument association. Really all we need to say is
that MVBITS is exceptional. It might, however, be a good idea to add
an illegal example such as
     CALL SWAP(A(1:10),A(2:11))  ]
