J3/17-170
To: J3
From: Malcolm Cohen
Subject: Response to GB-029
Date: 2017 June 26
1. GB-029 (15.5.2.4p15, 318:30-35) comment:
For a nonpointer nonallocatable assumed-rank dummy argument,
[318:30-35] says that the bounds are those of the actual argument.
If the actual argument is a nonpointer nonallocatable array, the lower
bounds in its C descriptor are required to be zero (see [497:14-15]).
Its actual lower bounds would need to be passed in a separate part of
the C descriptor. We do not think this was intended. TS 29113, clause
6.3, para 1 says that the extents are assumed in this case, not the
bounds.
Replace "The rank ... of that dimension."
with
"The rank and extents of the dummy argument are the rank and
extents of the corresponding actual argument. The lower bound of
each dimension of the dummy argument is equal to one, and the
upper bound is equal to the extent, except when the actual
argument is assumed-size, the upper bound of the last dimension
of the dummy argument is equal to minus one."
2. Response
Agreed that this was a typo in the edits section of the TS.
It is further noted that the description of the upper bound for
assumed-size is nonsense, as it literally describes a zero-sized
array, which is not our intention. Edits are provided to fix these
flaws.
Note that 8.5.8.5p4 says
"An assumed-size array has no upper bound in its last dimension
and therefore has no extent in its last dimension and no shape."
This means that the correct response for an assumed-rank array that
is associated with an assumed-size array is not to attempt to define
any extent or upper bound for its last dimension. The UBOUND and
SIZE intrinsics do not depend on the description here, nor does the
description of the C descriptor.
3. Edits to N2123 (17-007r1)
[318:30-35] 15.5.2.4 Ordinary dummy variables,
p15 beginning "An actual argument of any rank may correspond
to an assumed-rank dummy argument.",
replace the rest of the paragraph
"The rank and... that dimension."
with
"The rank and extents of the dummy argument are the rank and extents of
the corresponding actual argument. The lower bound of each dimension
of the dummy argument is equal to one. The upper bound is equal to
the extent, except for the last dimension when the actual argument is
assumed-size."
{Correct definition of the lower bounds.
The shape, when it exists, is properly defined by the rank and extents,
and this avoids attempting to specify things that do not exist.}
===END===