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.