
SUBJECT:
19 April 2001 (created and sent by Tim Josling to SAI)
William M. Klein (wmklein at ix
National Standards body in April 2001. He was not aware (and they did not tell him) that this body is
after the international ballot results became available that it became clear to him (and me) that these
comments would not make it to the appropriate committees for “comment resolution” on the FCD.
that. I am, however, sending them to J4 (as a J4 document) for whatever action J4 (and/or WG4)
be handled in the “totally editorial” project work and others that might be fixed in the (slightly more
technical) Project Editor paper that has already been identified in the US FCD comment document.
Other comments may be appropriate for the “candidate for a future revision” list.
of these comments as possible. Should J4 (or WG4) wish me to submit them as “late US Public
Review comments,” I would be happy to. Otherwise, this document should provide whatever
comments are written from that perspective. I am basing my comments on the assumption that the
Subclause
Technical/Editorial)
notice
appear to prevent copying
copying for purpose of
it.

than the notice in COBOL
excerpts from the standard
difficult for us to provide
COBOL compilers.
as any description of
COBOL is almost by
standard, and therefore
potentially in breach of
Patents. The existence of
a call for patents and
should consider amending
language, and which
may preclude the
development of a complete
allow full implementations
that are not in breach of
free compiler cannot
included patented
Not clear at all which
clear which material is
allowed to be used in
standard is covered by this
It is not specified how to
Clarify what is meant by
from other rules. Some
any rule under a heading
for syntax rules and others
least one case, this
rules, but others are under
neither. How exactly do
distinguished at run time.
See comment 138.
rules from other rules.
not defined.
every technical term used
definitions which should
have cross references to
Add requirement that
that implementors are not
mechanism to turn off non
to turn off non-standard
keywords means that it is
far less onerous that the
program which is
guaranteed to compile
use of other extensions.
conforming compiler. This
should be changed

document limits. No
document any limits other
complexity has to be
memory’. Suggest that
makes it impossible to
write a program that will be
refrain from imposing such
limits.
conforming compiler.
levels of nested statements
(10)
references (100)
number of sub clauses in
number of levels of nested
data definitions (10)
comments below should
have minimum limits of
various odd values.
- etc
detail about defined items
See Section 4.1.1 on page
Add definition and cross
defined and not mentioned
Group Item not defined and
reference.
"examaple" (sic)
Clarify paragraph.
mean and what is it there
for.
used but not in the list of
reference. Change the
misleading and its use has
expression’ or some other
the intuitive meaning of
identifier.
circular.
‘rightmost element’ is used
claarify.
in a little endian vs big
endian world.
the last’.
defined though widely used
reference.

definition though it is widely
reference.
I believe many other terms
undefined terms and add
not defined.
Remove assumption that
construct to be in order is
where possible eg clauses
why does ‘redefines’ have
to be first.
end etc.
level numbers must be 1 or
level numbers must be
rule that adds no value and
specified ranges.
complex. It also makes
compilers slower due to the
warnings.
value but adds yet another
the compiler shall accept
programmer needs to be
aware of, and the compiler
100, shall document any
restriction, and need not
This also makes
generating code by
Why are there three literal
except for fixed format
(& and "- and old style)?
literal concatenation in any
context but only for non-
complexity and corner
Term ‘ljne’ is undefined.
Why the insistence that the
Add definition
Allow R-margin to be end
The ’85 standard is not
documentation of this).
could the right margin not
be ‘end of line’ which is
Any character would seem
vendor to specify whether
character, which seems to
allowed in the sequence
area
compiler input files.
defined.
much of the line is blank.

complex and hard to
of lines in free format and
continuation in fixed lines.
understand it.
is not defined
‘a’ that a literal can only be
continued once.
more …lines’
the rule that a continuation
this paragraph ("at least
character of the literal
much sense to do so, but
why have this rule? It is
the compiler to check.
not in list of definitions
reference.
when debugging lines are
processed should be
reference
sections on debugging
lines
matching rule is for
both have to have the
structure, or do they both
have to have the same
continuations.
be removed. Yet another
remember and enforce.
restriction and creates
specify how the processing
the programmer.
of the excellent ‘stages’
Replace by ‘REPLACE
misleading and it is actually
‘instead of’ and pushes the
stack.

as to when free form
after compiler directives in
compiler directive. Yet
no obvious reason eg for
each line one must
for fixed format in order to
enforce the rules.
a certain sequence of
terms of a conceptual
least but it is not clear at all
continued literals are lasted
just a set of arbitrary rules
which seem to make little
directives are processed or
whatever). This was done
C language. Without it, it is
very difficult to understand
This will be quite difficult to
checking for division by
zero would seem to be a
what is the requirement of
compiler must check for.
not in the definitions list.
reference
calling convention for
function names?
calling convention for
function-names as well.
by 7.2.8.2 (3) which refers
to functions/
consequence of some
conceptual sequence of
conceptual sequence of
operations were made
would them follow simply
from the sequence.
be implied as it is not the
‘test’

directive in the source to
specify default format
programmers will be
FORMAT FREE in
programs forever. This is
that COPY programs take
the default mode from
Change to ‘at runtime or
prescriptive. Should allow
translation before runtime.
implementor put on the
class literal?
implementor defined
elements
is yet another magic
that implementor must
for the implementor to
characters but is
any specific limitation, and
must document any such
Add definition and cross
in list of definitions
Allow function pointers
group)
allowed
a prototype associated with
them is they are to be used
needed eg to interface to C
programs such as qsort,
pointers to be passed
names must be disjoint.
except for library-names.
and it could be quite
disruptive to force library
other names.
Limit of 160 is yet another
Remove limitation. This
Limitation should be
removed. (Also in
the general maxim ‘no hard
coded limits if possible’, if
a minimum of 100 bytes
which vendors must

version of the document is
Not clear from this
is stated somewhere else
significant in alphanumeric
significant elsewhere.
have no effect but
presumably is intended to
enigmatic.
The requirements for
and semicolon must be
be preceded or followed by
space) are often
complexity for programmer
and implementor alike.
as long as they are not
duplicate names. Same for
the complexity of
encourages bad
programming practices and
spelling mistakes will
cause incorrect programs
Yet another different magic
8.4.1.2.2(3)
column
to have no arbitrary limit
is required).
see (8) above; this limits
the number of magic
remembered numbers– 10
and 100.
here but should be covered
subscripting.
reference’.
term which is not in the list
definition.
here but should be covered
by the general rule for

function pointers are not
allowed data types.
Rules seem to exclude
pointing at functions or
being used to invoke them.
term is undefined
term is in list of definitions
definition not a description
repeats paragraph 2 here
which only states one
and does not define them.
for each type wastes
it is only stated once (ie for
are global if they contain
the globa;l clause).
defined
the precise intended role of
external repository in
even in the presence of
s8.13.
not defined.
successive unary
negatives seems to be
successive negatives (eg a
-
the language more
complex and is yet another
to check
but not in list of definitions.
reference
seems very arbitrary, and
will execute very slowly on
this problem. Possibly
allow vendors to provide a
specify a specific lower
level or precision such as
Remove
paragraph is a typo.
expressions are allowed.
expression anywhere an
allowed.

another magic number.
vendors to support
least 100, while
Add ‘except in the context
Clarify.
‘necessary’ means here.
here is that in specific
logical expression are not
evaluated. I think I know
not really quite what is
needed. There are in fact
sophistication in analysing
logical expressions that
omission of evaluations.
1) OR not (complicated-
OR expression and its
must be true. Therefore in
be evaluated (leaving
aside the issue of zero
sake of simplicity).
users to suppress warnings
a mechanism to turn
the repository and the
This seems to require
‘may’ be fixed for the life of
the file.
the fact that certain
change while the file exists.
Why enforce this?
source-computer without
any details adds
reason.

equivalent’ This is repeated
section 8.9 or some other
document, and is always
Allowing omission of
(intrinsic)
functions, based on a
source file means changing
the language’s syntax. To
only seems to be justified
on the basis of making
is not an apparent design
objective of the standard!
function names makes
programs harder to
intrinsic function names
with user defined functions.
see a reference to an
intrinsic function you would
need to check if it is
Limit on number of locks
meaningless. It would be
software dependent
feature.
can contain based items.
for this rule; it is another
The layout of the bits in the
or specify that it is
implementor defined.
this an omission or a
make this implementor
defined?
be in working storage,
working storage.
This is very confusing as
conceptually are for
parameters and data items
respectively, which
conflicts with the based

ideas to allow upward
item in linkage, without
existing code which allows
removing BASED clause
linkage item, without a
based clause.
can be for parameters or
for items whose address is
Make screen optional.
screens a mandatory part
of the language is 15 years
because it is
hardware/software
implementor has a
loophole allowing him to
First sentence is a
that has some meaning eg
"externally visible’.
pointer data items cannot
‘name of the file’ suggests
the reference to the file that
is visible to other
in the OS.
Remove restriction.
data item is not needed.
requirement that the data
item be in range.
read Appendix C.
discussion in Appendix C.
Write the material on
from elsewhere.
and provide cross
has to reread the whole
be some slight changes.
usage varies depending on
that can hold the value is
precision is less than the
Require a warning on lost
precision.

possibly many copies of a
use of IS GLOBAL for
enclosing program would
one allocated?). It is also
technically difficult and
the stack, and may be
unreliable as well in a multi
Enigmatic without having
relevant section in
Appendix C.
facility, but is far from state
of the art (no fonts, images
optional.
Unnecessary limitations.
Specify that where
subordinate tables are less
is still there (ie later items
do not slide up).
whereas other similar data
unsigned?
2*max means that the most
efficient form for index
requirement to support up
to max+1 only.
most cases.
Another magic number
Object orientation is a
only implementations that
implement it should be
too large a jump for a
high a runtime an