From Miles.Ellis@Educational-Technology-Resources-Centre.oxford.ac.uk  Mon Oct  9 20:48:23 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 UAA20052 for <sc22wg5@dkuug.dk>; Mon, 9 Oct 1995 20:47:45 +0100
Received: from vax.ox.ac.uk by oxmail2 with SMTP (PP);
          Mon, 9 Oct 1995 20:47:22 +0100
Received: from 163.1.85.1 by vax.ox.ac.uk (MX V4.1 VAX) with SMTP;
          Mon, 09 Oct          1995 18:44:39 +0100
X-Sender: MELLIS@vax.ox.ac.uk
Message-ID: <v01530506ac9f0fab4f3f@[163.1.85.1]>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Mon, 9 Oct 1995 18:45:34 +0100
To: sc22wg5 <sc22wg5@dkuug.dk>
From: Miles.Ellis@Educational-Technology-Resources-Centre.oxford.ac.uk (Miles Ellis)
Subject: CD Ballot Comments - 5 of 7

5.      German comments


The following comments are mainly editiorial, and almost entirely to
reach a more consistent programming style in the example sources.
Some of the proposed edits are:
 * always use the :: form of specifications,
 * always name END statements, including generic interface names in F95,
 * always use LEN=n instead of CHARACTER*n,
 * specify INTENTs on procedure interfaces.
Some minor wording changes are also proposed, and a CCI made to Note14.2
(f90interp.1995-47) is quoted/repeated here.

page:line  sec    comment
------------------------------------------------------------------------
xiii:2   Intro       delete "1996" (multi-part => multi-year)
 xiv:16  Intro       corrrects => solves
 xvi:28  Intro       statements functions: small typeface
   3:26  1.5.1       supplied a generic interface to =>
                     extended the generic interface of
  19:5   2.5.8       delete "also"
  40:27  N4.20       use :: form of spec
  40:28  N4.20       use :: form of spec
  41:8   N4.22       "MODULE" => "MODULE DEFINITIONS"
  42:16  N4.27       use :: form of spec
  42:17  N4.27       "(5)" => "(LEN=5) ::"
  42:28  N4.28       use :: form of spec
  42:38  N4.29       "(20)" => "(LEN=20)"
  42.42  N4.29       use :: form of spec
  43.20  N4.31       use :: form of spec
  44.6   N4.32       use :: form of spec
  44.7   N4.32       use :: form of spec, use LEN=
  44.16  N4.32       use :: form of spec
  44.17  N4.32       use :: form of spec, use LEN=
  44.18  N4.32       "TYPE" => "TYPE EMPLOYEE"
  44.19  N4.32       use :: form of spec
  46.6   N4.35       use :: form of spec
  47.10  N5.1        use :: form of spec
  51.28  N5.7        use :: form of spec
  51.29  N5.7        use :: form of spec
  54.5   N5.11       use :: form of spec
  59.4   N5.17       use :: form of spec
  59.12  N5.18       use :: form of spec
  59.22  N5.19       use :: form of spec
  62:24  N5.23       use :: form of spec
  62:28  N5.23       use :: form of spec
  64:8   N5.24       use :: form of spec
  64:13  N5.24       use :: form of spec
  65:6   N5.25       use :: form of spec
  65:7   N5.25       use :: form of spec
  68:3   N5.30       use :: form of spec
  68:4   N5.30       use :: form of spec
  70:29  N5.33       use :: form of spec
  72:3   N6.1        use :: form of spec
  72:4   N6.1        use :: form of spec
  74:25  N6.5        use :: form of spec
  74:26  N6.5        use :: form of spec
  79:8++ N6.14       * indent 9-15, 18-31, and 34-40
                     * add " INITIALIZED_TYPE" in 11,
                       " MOD1" in 16, and " MAIN" in 42
                     * 12-15 is bad programming style.
                       Specify all attributes in one place:
    :12         INTEGER,                ALLOCATABLE, SAVE ::   saved1(:)
    :13         INTEGER,                ALLOCATABLE       :: unsaved1(:)
    :14         TYPE(INITIALIZED_TYPE), ALLOCATABLE, SAVE ::   saved2(:)
    :15         TYPE(INITIALIZED_TYPE), ALLOCATABLE       :: unsaved2(:)
  81:12  N6.18       "SUBROUTINE" => "SUBROUTINE PROCESS"
  90:5   N7.12       use :: form of spec
  90:9   N7.12       use :: form of spec
  98:24  N7.27       use :: form of spec
 108:28  N7.45       use :: form of spec
 114:4   N7.53       use :: form of spec
 114:7   N7.53       use :: form of spec
 114:8   N7.53       use :: form of spec
 114:24  N7.54       use :: form of spec
 116:23  N7.58       use :: form of spec
 117:6   N7.59       use :: form of spec
 123:5-12 N8.6       indent
 146:38  N9.25       use :: form of spec
 146:43  N9.25       correct line break
 175:3   N10.29      use LEN= , evtl. use ::
 175:4   N10.29      evtl. use ::
 180:5   N10.35      use LEN= , evtl. use ::
 180:6   N10.35      evtl. use ::
 183:23  11.1        delete "external procedure," (redundant-program unit)
 183:30  N11.2       use :: form of spec
 184:31  11.3        delete "external procedure," (redundant-program unit)
 187:30  N11.13      declare A, B, C
 193:8   N12.5       use :: form of spec
 193:9   N12.5       use :: form of spec
 193:12  N12.5       use :: form of spec
 193:13  N12.5       use :: form of spec
 193:14  N12.5       use :: form of spec
 193:28  12.3.2.1    equals => assignment
 194:13  N12.6       "INTERFACE" => "INTERFACE SWITCH"
 195:27  N12.8       "INTERFACE" => "INTERFACE ASSIGNMENT ( = )"
 196:11  N12.10      use :: form of spec

 195:13  12.3.2.1.1   " or redefined" => ", or redefined"
                      (to clarify: replacement is only possible
                       for derived type assignment)
 195:14  12.3.2.1.2  equals sign => assignment symbol
 196:19  12.3.2.3    function name (13.11) => procedure name
                     (all intrinsics are generic, not only functions)
 198:6   N12.15      use :: form of spec
 198:9   N12.15      use :: form of spec
 203:26  N12.22      cannot => shall not
 207:6,8 N12.27      merge type and attr of ARRAY, new line for C_SUM:
    :6                 REAL, INTENT(IN) :: ARRAY
    :8                 REAL, DIMENSION(SIZE(ARRAY)) :: C_SUM
 207:9   N12.27      use :: form of spec
 215:5   13.1        elemental intrinsic => elemental
 216:36  13.5.7      functions => elemental functions
 216:36  13.5.7      subroutine => elemental subroutine
 216:37  13.5.7      functions => elemental functions
 216:38  13.5.7      functions => elemental functions
 216:38  13.5.7      function => elemental function
 217:1   13.5.7      subroutine => elemental subroutine
 217:1   13.5.7      functions => elemental functions
 217:21  13.7        function => transformational function
 220:6   13.9        function NULL => transformational function NULL
 220:10  13.10       delete "special" (nothing special...)
 226:6   13.14       procedure results => function results
 226:7   13.14       procedure => function
 271:18  14.1.1      delete ", and external procedures"
                     (redundant--program unit)
 272:7++ N14.2       see my CCI f90interp.1995-47:
                     Generic identifiers are local entities of class (1)
                     as are intrinsic procedures, but don't cause the
                     intrinsic procedure to become inaccessible.
                     Also, including an INTRINSIC stmt in line 10 changes
                     the actual name resolutuion.
 273:33  N14.4       use :: form of spec
 273:36  N14.4       use :: form of spec
 273:38  N14.4       "INTERFACE" => "INTERFACE A"
 275:4++ N14.6       adjust indentation: 3 instead of 10 pos;
                                         indent specs in interfaces, too
 275:6   N14.6       use :: form of spec
 275:7   N14.6       "END" => "END FUNCTION SCALAR_RANF"
 275:9   N14.6       use :: form of spec
 275:10  N14.6       "VECTOR RANDOM" => "VECTOR_RANDOM"
 275:10  N14.6       use :: form of spec
 275:11  N14.6       "END" => "END FUNCTION VECTOR_RANDOM"
 275:39  14.1.2.4.2  dummy is => dummy argument is
 275:45  14.1.2.4.2  the name => that name
 280:4   N14.11      use :: form of spec, add "B"
 280:5   N14.11      use :: form of spec, add "C"
 280:6   N14.11      use :: form of spec, add "D"
 280:7   N14.11      use :: form of spec, add "E"
 280:8   N14.11      use :: form of spec, add "F"
 280:9   N14.11      use :: form of spec, add "G"
 284:3   N14.15      use :: form of spec
 284:4   N14.15      use :: form of spec
 284:5   N14.15      use :: form of spec
 284:22  N14.16      use :: form of spec
 305:13-14 C.1.1     use :: form of spec
 305:27-29 C.1.1     use :: form of spec
 305:35    C.1.1     use :: form of spec
 305:38    C.1.1     use :: form of spec
 305:40-41 C.1.1     use :: form of spec
 306:9-12  C.1.2     use :: form of spec
 307:48    C.2.1     add " PROGRAM DYNAM_ITER"
 308:27    C.2.2     add " PROGRAM ITER"
 308:33-34 C.3.1     use :: form of spec
 308:37-40 C.3.1     use :: form of spec
 308:43-44 C.3.1     use :: form of spec
 308:46    C.3.1     use :: form of spec
 309:7-8   C.3.1     use :: form of spec
 309:10    C.3.1     use :: form of spec
 310:37    C.4.4     add " CELL"
 318:9     C.6.2     use :: form of spec
 321:33    C.7.2     replace by
                      "CHARACTER(LEN=8) :: A ; CHARACTER(LEN=1) :: B"
 323:45    C.8.2.1   add " SUB"
 324:23    C.8.3.2   use :: form of spec
 324:26    C.8.3.2   use :: form of spec
 324:27    C.8.3.2   add " DATA_MODULE"
 324:39-40 C.8.3.3   use :: form of spec
 324:41    C.8.3.3   add " NONZERO"
 324:42    C.8.3.3   add " SPARSE"
 325:11    C.8.3.4   use :: form of spec
 325:34+   C.8.3.5   specify dummys INTENTs ?
 325:35    C.8.3.5   use :: form of spec
 325:38    C.8.3.5   use :: form of spec
 326++     C.8.3.7   why not make the specific procs PRIVATE?
 326++     C.8.3.7   consistently define function TYPEs _either_
                     in the function-stmt _or_ in a following
                     type-spec stmt...
 326:27-46 C.8.3.7   indent
 326:37    C.8.3.7   add " OPERATOR (.IN.)"
 326:40    C.8.3.7   add " OPERATOR (<=)"
 326:43    C.8.3.7   add " OPERATOR (+)"
 326:46    C.8.3.7   add " OPERATOR (-)"
 327:1-3   C.8.3.7   indent
 327:3     C.8.3.7   add " OPERATOR (*)"
 327:5-51  C.8.3.7   indent
 327:6     C.8.3.7   " A" => ", INTENT(IN) :: A"
 327:15    C.8.3.7   use :: form of spec
 327:17    C.8.3.7   use :: form of spec
 327:32    C.8.3.7   use :: form of spec
 327:34    C.8.3.7   use :: form of spec
 327:42    C.8.3.7   use :: form of spec
 327:48    C.8.3.7   use :: form of spec
 328:1-32  C.8.3.7   indent
 328:5     C.8.3.7   use :: form of spec
 328:6     C.8.3.7   use :: form of spec
 328:20    C.8.3.7   " A" => ", INTENT(IN) :: A"
 328:22    C.8.3.7   use :: form of spec
 329:2     C.8.3.8   add " J"
 329:6     C.8.3.8   use :: form of spec
 329:7     C.8.3.8   use :: form of spec
 329:8     C.8.3.8   add " K"
 331:39    C.9.5     delete
 331:40    C.9.5     add " BEST"
 331:41    C.9.5     delete (there is no <begin>) ?
 331:46    C.9.5     use :: form of spec
 332:12    C.9.5     delete (there is no <begin>) ?
 332:22    C.10.1    use :: form of spec
 332:26    C.10.1    use :: form of spec
 332:41    C.10.1    use :: form of spec
 338:22    C.11.3    use :: form of spec


Additional German comments not included in official ballot

page  line   remark               correction
--------------------------------------------
 26    13    column 6             character position 6
106    26    * Y                  bold style
118    4     keyword missing      FORALL (I=1:N) A(I,I) = X(I)
118    24    wrong font           index-name
119    21    column 6             character position 6
146    42/43 line break
166    17    decimal point        yyy.x1x2...xdexp
166    32    character missing    |exp|
195    46    executable program   program
209    28    INstead              Instead
275    5-11  indentation

Except when explicitly referring to the name of this standard or of any former
Fortran standard and within section 1.9, "international standard" or
"International Standard" should be replaced by "standard":
xiii   16
xiv    23
3      24

Except within formal syntax and within examples, adjacent keywords containing
an optional blank should always appear with a "small blank" instead of a
"normal blank".

The asterisk should always be that one from the Symbol font. There are several
appearances of Palatino asterisks.

Except within examples, a minus operator should not be set as a hyphen.
There a several appearances of "hyphen-operators".

Missing blanks around [, ], (, and )  in formal syntax:
110   29, 35, 36, 37
112   38, 40, 41, 42
113   8

There are (chapter-wise) different indentation methods for complete
source lines within examples.

Undefined technical term "format descriptor" in index:
346    delete item:   "edit descriptors"  see  "format descriptors"
347    change item "format descriptors" into "edit descriptors",
       and move item together with all subitems to page 346.
347    insert item:  "format descriptors"  see  "edit descriptors".


Need for clarification regarding X3J3/95-007R1
=======================================

There is a restriction on page 60 lines 27-29 such that default initialization
may not be automatically overridden by explicit initialization with
DATA statement; it is strictly not allowed. There is no such restriction for
default initialization and explicit initialization with type declaration
statements.

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

   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

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


