11-215
To: J3
From: Van Snyder and Steve Lionel
Subject: Interp: Are lower bounds of assumed-shape arrays assumed?
Date: 2011 June 30
---------------------------------------------------------------------
NUMBER: F03/0118
TITLE: Are lower bounds of assumed-shape arrays assumed?
KEYWORDS: LBOUND, assumed-shape array, constant expression
DEFECT TYPE: Erratum
STATUS: J3 consideration in progress
QUESTION:
Does the following program conform to the 2008 Fortran standard?
subroutine S ( A )
integer :: A(:,3:)
integer, parameter :: R = size(lbound(A))
end subroutine S
Processors disagree. If the lower bounds of an assumed-shape array
are assumed, LBOUND(A) is not a constant expression according
to item (4)(b)(i) in subclause 7.1.2. If the lower bounds of an
assumed-shape array are not assumed, LBOUND(A) is a constant
expression in this case, but might be a specification expression in
other cases.
ANSWER:
This program conforms to the 2008 Fortran standard. The lower bounds
of an assumed-shape array are not assumed. If a lower bound is not
specified, it has the value 1 -- see the final sentence of the final
paragraph of subclause 5.3.8.3. If a lower bound is specified, it
must be specified either by a constant expression or a specification
expression. In the example in the question, the lower bound of the
first dimension is omitted, and therefore has the value 1, while the
lower bound of the second dimension is given by a constant
expression. Therefore, the reference to LBOUND is a constant
expression, and thus the reference to SIZE is a constant expression.
EDITS:
None.
SUBMITTED BY: Van Snyder
HISTORY: 08-200r1 m185 F03/0118 submitted
11-215 m195 Revised for F08