(j3.2006) Public Comment J32026
Michael Ingrassia
michaeli
Tue Jul 8 20:28:46 EDT 2008
08-240
To: J3
From: Michael Ingrassia
Subject: Public Comment J32026
Date: 2008 July 08
----------------------------------------------------------------------
Commenter's Subject was "implicit typing should not be allowed in derived"
Consider the program
PROGRAM MAIN
TYPE T
INTEGER :: I = BIT_SIZE(J)
END TYPE
CALL SUBR1
CONTAINS
SUBROUTINE SUBR1
J = 1
CALL SUBR2
PRINT *, J
END SUBROUTINE
SUBROUTINE SUBR2
J = 2
END SUBROUTINE
END
This program prints either 1 or 2 depending on the
implementation with which it is compiled. Some
implementations implicitly declared J in the
top-level scope of the main program. Some declare
J in the scope of the derived type definition, which
is semantic nonsense, but there you have it.
Paragraph 4 of Section 5.5 of the Fortran 2008 draft
states
The data entity is treated as if it were
explicitly declared in the outermost scoping
unit in which it appears.
The derived type definition is the outermost scoping
unit in which the occurrence of J in the derived type
definition appears, but an explicit definition of J
is not allowed in that context.
The simple solution for this problem is to ban implicit
typing in derived type definitions.
----------------------------------------------------------------------
More information about the J3
mailing list