From Miles.Ellis@Educational-Technology-Resources-Centre.oxford.ac.uk  Mon Oct  9 20:49:03 1995
Received: from oxmail2.ox.ac.uk (oxmail2.ox.ac.uk [163.1.2.1]) by dkuug.dk (8.6.12/8.6.12) with ESMTP id UAA20090 for <sc22wg5@dkuug.dk>; Mon, 9 Oct 1995 20:48:39 +0100
Received: from vax.ox.ac.uk by oxmail2 with SMTP (PP);
          Mon, 9 Oct 1995 20:48:07 +0100
Received: from 163.1.85.1 by vax.ox.ac.uk (MX V4.1 VAX) with SMTP;
          Mon, 09 Oct          1995 18:44:31 +0100
X-Sender: MELLIS@vax.ox.ac.uk
Message-ID: <v01530503ac9f0f30325f@[163.1.85.1]>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Mon, 9 Oct 1995 18:45:27 +0100
To: sc22wg5 <sc22wg5@dkuug.dk>
From: Miles.Ellis@Educational-Technology-Resources-Centre.oxford.ac.uk (Miles Ellis)
Subject: CD Ballot Comments - 2 of 7

2.      US Comments for Quality Improvements

9:5 section 2.1, change "is described in 1.6.2" to
 ", assumed rules, and syntax conventions are
 described in 1.6.2 through 1.6.4".

15:20 Section 2.4.1.2, 3rd sentence
 change "(4.4.5)" to "(7.5.1.5)"

25:4 Section 3.3, 2nd paragraph,
 change "(10.7)" to "(10.2.1)"

62:17 (Brian's 32:10-33), section 5.2.10,
 add the following before [62:17-], as its own paragraph:
 "A <data-statement-constant> that is a
 <boz-literal-constant> is treated as if the
 constant were an <int-literal-constant> with the |
From ???@??? Wed Oct 04 22:35:03 1995
Date: Wed, 04 Oct 95 22:11:56
From: <jwagener@amoco.com>
Subject: WG5 ballot comments
To: mx%"miles.ellis@educational-technology-resources-centre.oxford.ac.uk"
Cc:
X-VMS-From: MX%"jwagener@amoco.com"
X-POP3-Server: vax.ox.ac.uk IUPOP3 V1.8-1/UCX
X-POP3-ID: 1995-10-04.22:30:31.764

 maximum <kind-param> supported by the processor."

34:27 section 4.3.1.3, after "value." add:
 "The kind type parameter of an approximation method
 is returned by the intrinsic inquiry function
 KIND (13.14.52)."

39:38 Section 4.4.1, 2nd paragraph after constraints,
 1st sentence, change "for a component" to
 "for a non-pointer component"

38:11 (Brian's 41-42), Section 4.4, penultimate paragraph
 add at the end of the paragraph:
 "If a component has default initialization, it is
 not required that default initialization be specified
 for other components of the derived type." |

42:1 Note that this text is being moved into a NOTE just below.
 section 4.1.1, [42:1],
 change "of the type of which it is a component"
 to "of that derived type"

42:1-3 Section 4.4.1, text ahead of 10th note (note 4.26)
 Make the text part of the 10th note.

42:12 Section 4.4.1, text ahead of 11th note (note 4.27)
 Delete this sentence.

42:34 Section 4.4.1, text ahead of 13th note (note 4.29)
 Make the text part of the 13th note.

43:1 Section 4.4.1, text ahead of last note (note 4.30)
 Make the text part of the last note.

46:25 Section 4.5, penultimate note (4.38)
 Change "(20, 'SMITH')" to "(40, 'SMITH')"

49:36 section 5.1 [49:36], move this line to be after line 32
 in the same note.

53:27 section 5.1.2.3, [53:27],
 change "12.5.2.1, 12.5.2.2, 12.5.2.3" to
 "12.4.1.1, 12.4.1.2, 12.4.1.3"

53:39 Section 5.1.2.4, 1st paragraph, penultimate sentence
 Before "declaration" insert "type"

53:41 (Brian's 53:40), Section 5.1.2.4, end of 1st paragraph.
 Add
 "The DIMENSION attribute alternatively may be specified in the |
 specification statements DIMENSION, ALLOCATABLE,
 POINTER, TARGET or COMMON." |

62:11-12 replace the sentence starting on line 11 with:
 "If an object is of type character, the corresponding
 <data-statement-constant> shall be of the same type
 and kind. If an object is of type logical, the
 corresponding <data-statement-constant> shall be of
 the same type."

[94:20+ (Brian's 68:20) Paper 95-186 answers this for Fortran 90,
 /edit should apply the same edits (in 007r1, it goes
 after [94:20+])
EDITS: see 95-186, adapt to 007r1

71:34 after "parameters" add
 " (except for <boz-literal-constant>s)"

73:30+ (Brian's 73:37+)
 add this note after the existing note on page 73:

 "The syntax rules are structured such that a <data-ref>
 that ends in a component name without a following
 subscript list is a structure component, even when other
 component names in the <data-ref> were followed by a
 subscript list. A <data-ref> that ends in a component
 name with a following subscript list is either an array
 element or an array section. A <data-ref> where one
 <part-ref> has non-zero rank, and that ends with a
 substring range, is an array section, but if all
 <part-ref>s are of rank zero, then that <data-ref>
 with the trailing substring range is a substring."

109:20-21 section 7.5.1.6: change the note to normative text, and
 in the text of the note, change
 "may not both be numeric, both be logical, or both be" |
 to
 "shall not both be numeric nor both be logical. The
 types and kinds of <X sub 1> and <X sub 2> shall not
 both be" |

111:33 section 7.5.3.2, change "a small" to "the following"

113:36+ (Brian's 115 36+) add a note (section 7.5.4.1):
 "An assignment statement that is a FORALL body construct
 may be a scalar or array assignment statement, or a
 defined assignment statement. The variable being
 defined should use each index name in the
 <forall-triplet-spec-list>. For example,
 FORALL (I = 1:N, J = 1:N)
 A(:, I, :, J) = 1.0 / REAL(I+J-1)
 END FORALL
 broadcasts scalar values to rank two submatrices of A."

114:46 m1, m2, and m3 are not the user specified expressions.
 They are computed from the user specified expressions as
 described later in the paragraph. However, the following
 edits are needed:
 [114:46-115:5] indent the paragraph and number the
 paragraph (we'll add a 2nd paragraph below)
 (i.e. make the paragraphs a list).

 [114:46-115:5] All the subscripted "m"s, "k" and "max"
 should be in italics.

 [115:2] Start a new paragraph with the sentence that
 starts with "Let". This paragraph is also indented and
 is item 2 in the list. The last line of the paragraph
 is 115:5, so don't indent or number [115:6-7].

116:11-12 (Brian's 116:12) section 7.5.4.2.3,
 replace lines 11-12 with
 "Computations that would otherwise cause error conditions
 can be avoided by using an appropriate <scalar-mask-expr>,
 that limits the active combinations of the
 <index-name> values. For example,"

116:17 section 7.5.4.2.3, insert "that statement's " before
 "<mask-expr>"

[xv:30] add text following [xv:30]
"(Note: this does not apply to pointers, only arrays declared with the
ALLOCATABLE attribute.)"

[132:17]  change "9.1.3" to "9.5.1"

[139:37]  after "default character." insert "When a record contains any
nondefault characters, the appropriate value for the RECL= specifier is
processor dependent."

[143:32+]  Insert this introductory sentence
"The FMT= specifier supplies a format specification or specifies list
directed formatting, for a formatted input/output statement."

[146:13]  change "an assumed" to "a whole assumed"

[106:22]  change "an assumed" to "a whole assumed".

[184:29]  change to read "the object shall have the SAVE attribute."

[13:43]  delete sentence "USE statements, if any.... "

[13:43]  change "program unit heading" to "program, subprogram, etc. heading"

[14:16-17]  add a second note to the table
"Note:  derived type definitions are also scoping units, but they do not
contain any of the above statements, and so have not been listed in the
table."

[14:16-17]  in the footer of the Table 2.2, move "The scoping unit of a
module does not include  any  module  subprograms  that the module
contains." into a note.

[17:27]  change "or following pointer association with a disassociated
pointer" to ",  following  pointer  association with a disassociated
pointer, or initially through pointer initialization."

[30:24]  delete

[30:26] change sentence to read "An array has type and type parameters..."

[39:42]  2nd paragraph after constraints, 4th sentence, change "If an
object is of a type" to "If a component is of a type".

[53:16]  change to read "shall neither be defined nor become undefined..";
change [205:14] to read the same.

[61:43]  add to first sentence to read "...and scalar variables, referred
to as "sequence of variables" in subsequent text."

[62:5]  change "sequence of scalar variables" to "sequence of variables"

[62:8]  change "sequences of scalar variables" to "sequence of variables"

[62:9] change 'initial value' to 'initial value or NULL()'

[62:17] after "A <data-stmt-constant>" add ", other than NULL(),".

[63:26]  change "for the name of that function subprogram" to "for the name
of the result variable of that function subprogram"

[66:32]  add a constraint
"Constraint: A substring-range shall not be empty."

[44:28+]  add as a new note:
"The requirement that the two types have the same name applies to the <type
name> of the respective <derived-type-stmt>, not to a local name introduced
via renaming in a USE statement."

[48:42-45]  delete this note

[49:22]  add to the end of this paragraph:
"Use of =>NULL() in a scoping unit is a reference to the intrinsic function
NULL."

[66:46+]  add at the end of the existing note as a new paragraph :
"Further rules on the interaction of EQUIVALENCE statements and default
initialization are given in 14.6.3.3."

[3:35+]   add
"(4)  This standard requires that an object with the TARGET attribute
become storage associated only with another object that has the TARGET
attribute.  This restriction did not apply in Fortran 90."

[81:1]  in 2nd numbered list, item (1), change "processor defined" to
"processor dependent"

[93:17]  add "...is not an statement function, does not have a dummy
procedure argument, "

[94:8]  add ":" at the end of "and where each argument of the function is";
same to the 2 same lines in 7.1.6.1

[118:11]  change "nonzero diagonal" to "nonzero off-diagonal"

[119:11]  from defect item 194
insert "and possibly FORMAT <<and DATA statements>>" between "constructs"
and "that", where << >> is obsolescent font.

[3:15]  change to read "Real, double precision, and pointer DO control
variables,"

[146:14] (I/O implied do), insert to read "a nonpointer named .."

[45:29] (array constructors), insert to read "a nonpointer named .."

[61:11] (data statement implied do), insert to read "a nonpointer named .."

[113:15] (FORALL), insert to read "a nonpointer named .."

[189:12]  after "expression", insert "(7.1.3)"

[196:10]  delete this line

[196:42]  change "operation and a" to "operation. A"

[198:16]  change "Arguments" to "Actual arguments"

[200:32]  change "Arguments" to "Actual arguments"

[200:45]  change "Arguments" to "Actual arguments"

[204:31]  change "function reference" to "<function-reference>"

[200:5]  change [200:5] delete "can", to read:  "a processor checks.."

[200:19]  add "Because an INTENT(OUT) variable is considered undefined on
entry to the procedure, any default initialization specified for its type
will be applied."

[200:24-27]  moved to [199:26], so that they appear with  the rest  of  the
text  that  deals  with restrictions on passing scalars to scalars.

[200:37-39]  replace entire paragraph with "If the interface of the dummy
procedure is explicit, the characteristics listed in 12.2 must be the same
for the associated actual procedure and the corresponding dummy procedure."

[206:35-36]  change to "If the <prefix-spec> PURE or ELEMENTAL is present
the function ..."

[208:20-21]  add "..appear in any specification or type-declaration statement".

[166:17]  add the missing "." after "yyy" and delete the "." after "<exp>";
put blanks around the dot, and the same for the "." at [167:9]

[187:17]  delete "objects having"

[187:19+]  add as a new note
        "In the example
           BLOCK DATA INIT
             REAL A, B, C, D, E, F
             COMMON /BLOCK1/ A, B, C, D
             DATA A /1.2/, C /2.3/
             COMMON /BLOCK2/ E, F
             DATA F /6.5/
           END BLOCK DATA INIT
        common blocks BLOCK1 and BLOCK2 both have objects that
        are being initialized in a single block data program unit.
        B, D and E are not initialized but need to be specified
        as part of the common blocks."

[210:39]  change "has no side effects" to "shall have no side effects";
make the first sentence (from the second) "A pure procedure" followed by
the list;
make the second sentence the former first sentence as modified

[212:37]  add new sentence
"In pure subroutines, side effects to dummy  arguments with the POINTER
attribute are also permitted."

[213:8]  change to read "all actual arguments..."

[213:12]  add note (but not in same box as following note)
"For intrinsic functions, a similar rule applies.  See 13.3."

[231:4]  delete the phrase, "It may be scalar or array valued."

[244:36]  delete the phrase, "It may be scalar or array valued."

[257:22]  add "The dummy argument A has no INTENT attribute".

[257:21-22]  delete the phrase, "It may be scalar or array valued."

[274:29] and [274:35]  change "interface block" to "generic interface"

[273:43-45]  change to "If a reference to the intrinsic function NULL
appears as an actual ..."

[275:33-35]  delete item (5) entirely

[276:27]  change "its host" to "the host of the procedure or interface block".

[276:33]  change "to it." to "to the procedure."

[276:45]  change "in the scoping unit of a statement" to "in the scoping
unit that contains a statement"

[277:15-17]  move [277:15-17] to [276:43+]

[279:2]  put "or  defined" in obsolescent font

[281:37]  change to "The target of the  pointer  is  deallocated  other
than  through  the pointer"

[285:14-19]  in [285:14] and [285:18] change "masked array assignment" to
"masked array assignment or FORALL assignment"

[289:31+]  add a definition for "assumed-shape array"; use the text in
[54:31-32]

[291:42]  change "(12.7)" to "(2.4.5, 7.5, 12.7)"

[299:8]  change "DO control variables" to "DO variables"; also, in the text
of item (1) change "do-variable" to "DO variable", and change the title of
B.1.1 from "DO variables" to "DO-Variables"

[299:27]  change "implementing  each of the deleted features" to
"implementing any of the deleted features"

[299:34-35]  change "a named" to "a nonpointer named"

[300:23+]  at the end of the section, add the constraint
"Constraint:  A pure procedure shall not contain a <pause-stmt>."

[301:26-27]  add double quotes around  '(11) in an assign-stmt'  and
change  'assign-stmt' to italics; also, at end of lines [301:22], [301:25],
double quote missing

[303:9]  replace "This facility" with
"Some uses of this facility may be replaced with an automatic character
length function, where the length of the function result is declared with a
specification expression.  Other uses";
add the following as the second paragraph in section B.2.5
"Note that dummy arguments of a function may be assumed character length."

[306:3]  add at the end of the line, "(4.3.1.2)"

[306:32 - 307:20]  add "(4.4.1)" to the title of this section

[323: 4]  change 'processor defined' to 'processor dependent'

[330:31]  change "shall be more general" to "needs to be more general"

[331:26]  change "TARGET attribute," to "TARGET attribute and is scalar or
assumed-shape,"

[333:14]  append "(7.1.6.1)"

[343]  at top add "In the following, entries in {{{italics}}} denote BNF
syntax terms entries in {{{bold face}}} denote language keywords; page
numbers in bold denote primary or defining entries.

[xvii:3] change "of all terms" to "of principal terms"

[343]  Annex D, entry for '**';  add 84

          Annex D, entry for '/'; what about the '/' that appears on 161?

          Annex D, entry for '::';  add 57,58,59,195,196

          Annex D, entry for ';';  add 27

          Annex D, entry for '=';  what about '=' in DO statements and Type
statements.

          Annex D, add entries for  "advancing  input/output  statement"
and "alternate return"

          Annex D, add entries for "automatic deallocation" (since it is
mentioned  in  the  Intro),  bounds,  branching, character length
parameter, character intrinsic assignment, character string edit
descriptor,  character storage unit

          Annex D, entry for 'boz constant'
While  the  syntax term <boz-literal-constant> appears in the text of the
standard, the term "boz constant" does not. There should not be an  entry
for  it  in  the  index.  Instead 'binary constant', 'octal constant' and
'hexadecimal constant' should ea

          Annex D, entry for 'blank common', change '68' to '68-70'

          Annex D, entry for 'characteristics of a procedure',
If this is in the index, then shouldn't the  other  types  of
characteristics also be listed?

          Annex  D, entry for 'common-block-name' should be '<common-block
name>' as it is a grammar term.

          Annex D, add entries for 'component', 'real'  and  'complex'
under 'constant', 'construct'

[345]  Annex D, delete entry for 'derived-type' under 'constructor'.
The standard does not refer to derived-type constructors. Or change it to
'derived type  value'  as  section  4  uses  the term 'derived-type value
constructor' once.

          Annex D, entry for 'conformance'
We need multiple entries for the term conformance as it is  used  in  two
ways in the standard. There is shape conformance and there is conformance
to Fortran 90 and Fortran 77.

          Annex D, entry for 'default initialization'; 38 should be in
bold. Change 285 to 284-287.

[346]  Annex D, add entries for 'definable', 'deleted features', 'explicit
initialization',  'executable statement', 'ENTRY statement' (for
consistency with other keyword  statements),  'elemental  intrinsic
subroutine' (since function is listed)

          Annex D, entry for 'dummy arguments' 'restrictions' should not be
the only reference. Add to the 'dummy arguments' line 197.

          Annex D, entry for 'EQUIVALENCE statement' add 283

          Annex D, entry for 'edit  descriptors',  referring  the  reader
to 'format  descriptors'  seems odd, as 'format descriptors' does not
appear to be used by the standard.

[347]  Annex  D,  add  entries  for  'FORALL  statement', 'field width',
'Fortran character set'

          Annex  D,  entry  for  '<forall-construc>'  should  be
'<forall-construct>'

          Annex D, entry for 'formatting'
It  seems  odd that all of these numbers are in bold. Was that the intention?

          Annex D, entry for 'ICHAR intrinsic'
Why are some intrinsics listed in the index  but  others  not?    If  the
intent is to list those intrinsics that are referenced outside of section
13,  then  some are missing such as CHAR (section 4) and RESHAPE (section
4).

          Annex D, entry for 'intrinsic', 'subroutine' should be added.
This entry has an odd layout as the  term  intrinsic  applies  to  types,
operations  etc,  but  only  the subprogram oriented entries are indented
under intrinsic.

          Annex D, entry for 'intrinsic operations'
Why is a separate indented entry made for 'logical', but  not  for  other
operations  types that are listed outside of section 7? eg relational and
concatenation are both referenced in section 4.

[348]  Annex D, add entries for 'iteration count', <lower-bound>,
'nonadvancing  input/output  statement',  'nonexecutable  statements',
'numeric constant'

          Annex D, delete entry for 'names', it does  not  provide  any
more information than already provided by 'name' and '<name>'.

[349]  Annex D, add entries for 'obsolescent features', 'override'

          Annex  D, entry for 'PARAMETER', does there really need to be one
entry for PARAMETER in bold and another not in bold?

          Annex D, entry for 'pointer nullification', 40 should be in bold.

[350]  Annex D, add entries for 'reference', 'shape conformance',  'source
forms', 'statement entity'

          Annex D, entry for 'statement label', should the entry for
'statement labels' be combined with this one.

[351]  Annex D, entry for 'statements', missing from the  list  of
statements: 'FORALL', 'MODULE', 'MODULE PROCEDURE', 'PROGRAM', 'SUBROUTINE'

[353]  Annex  D,  add entries for 'Unconditional GOTO', 'ultimate
component', 'unspecified  storage  unit',  <upper-bound>,  'value
separator', 'whole array', 'zero character length'

[184:7-9]
page 184, line 7 Insert at the beginning "Normal" and change "Execution" to
"execution";
page 184, line 8, add at the end "Execution may also be terminated if
certain error
conditions occur."

[191:20]  add at the end of the line "or is an entry in a procedure with
the ELEMENTAL prefix-spec"

[207:7]  delete "! The characteristics  ...   C_SUM"

[210:25]  delete "data object" from end of line

[210:41]  on next page add a new list item (3) and renumber
      (3)  is an entry in a pure or elemental procedure

[211:13]  change "alternate return specifiers" to "alternate return indicators"

[213:11-12]  copy the sentence from 213:11-13 " For a non-intrinsic ...
specification expression." to the end of 213:27 and replace "function" with
"subroutine" in the copied text.

[116:18]  replace "with mask control by any control mask"  by "masked by
any control mask from outer nested WHERE constructs (7.5.3.2)"

[116:19-20]  replace "with masked control by the control mask" with "masked
by the control mask in effect for the where-assignment-statement"

[118:19]  replace with "A many-to-one assignment is more than one
assignment to the same subobject"

[213:30]  add as a note:
"The restriction that actual arguments associated with dummy arguments used
in specification expressions shall be scalar allows elemental procedures to
have internal arrays, etc., whose size depends on dummy arguments.
However, for any particular instan

[77:39-40]  replace with
"A bound in an allocate-shape-spec shall not be an expression containing
any reference to any allocate-object or the stat-variable, or a subobject
of either, in the same ALLOCATE statement."

[78:4]  after "appears" add ", nor shall it depend on any allocate-object
or subobject of an allocate-object allocated in the statement."

[80:9+]  add  "A pointer-object shall not contain any references to another
pointer object or subobject of a pointer-object in the NULLIFY statement."

[80:14+]  add  "An allocate-object shall  not reference any other
allocate-object or the stat-variable, or a subobject of either, in the same
DEALLOCATE statement."

[80:15]  after "statement" add ",nor shall it depend on any allocate-object
or subobject of an allocate-object deallocated in the statement."

[200:39]  at the end of the sentence add "and an elemental intrinsic actual
procedure may be associated with a dummy procedure that is not elemental"

[206:10]  replace "interface" with "characteristics", and change 12.3 to 12.2

[211:24-25]  replace the last sentence "The prefix-spec...interface" with
"The interface shall specify that the procedure is either pure or elemental."

[197:14]  replace the constraint with
"Neither a procedure with the prefix-spec ELEMENTAL nor an entry in such a
procedure shall be used as an actual argument."

=======================================================================

   Dr Miles Ellis                                          CCCCCCCCCCC
   Director: Educational Technology Resources Centre      C           C
   University of Oxford, 37-41 Wellington Square          C  E
   Oxford  OX1 2JF, ENGLAND                               C     T
                                                          C        R
   Telephone: +44 1865 270528     Fax: +44 1865 270527    C           C
   Email:     Miles.Ellis@etrc.ox.ac.uk                    CCCCCCCCCCC

=======================================================================


