08-241r1
To: J3
From: Van Snyder, originally from Michael Ingrassia
Subject: Public Comment J32027
Date: 2008 August 13
----------------------------------------------------------------------
Commenter: Robert Corbett
Subject: "definition is poorly defined"
Consider the program:
PROGRAM MAIN
TYPE T1
SEQUENCE
INTEGER I, J
END TYPE
TYPE T2
SEQUENCE
INTEGER I, J
END TYPE
TYPE(T1) X, Y
EQUIVALENCE (I, X, Y)
X%J = 2
I = 1
PRINT *, I, X, Y
END
The assignment to the variable I causes I, X, and Y
to become defined (see items (1) and (15) of
Section 16.6.5). Therefore, according to item (1)
of Section 16.6.6, I, X, and Y become undefined.
Item (1) of Section 16.6.6 should be modified so that
it directly applies only to ultimate components. The
effect on aggregate types will then occur as is
appropriate because of the rules given in
Section 16.6.1.
----------------------------------------------------------------------
J3 response:
Subclause 16.6.6 item (1) of the Fortran 2003 standard, and subclause
14.7.6 item (1) of the Fortran 95 standard, both specify the same
behavior.
The correct vehicle to deal with this question is an interpretation.