<br><font size=2 face="sans-serif">You certainly haven't tried XL Fortran
compiler. We compiled your code without any problems.</font>
<br>
<br><font size=2 face="sans-serif">Cheers,</font>
<br>
<br><font size=2 face="sans-serif">Jim Xia<br>
<br>
XL Fortran Compiler Test<br>
IBM Toronto Lab at 8200 Warden Ave, Markham, On, L6G 1C7<br>
Phone (905) 413-3444 Tie-line 313-3444<br>
email: jimxia@ca.ibm.com<br>
D2/YF7/8200 /MKM</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">Robert Corbett <Robert.Corbett@sun.com></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">fortran standards email list for J3
<j3@j3-fortran.org></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td><font size=1 face="sans-serif">04/07/2009 10:15 PM</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td><font size=1 face="sans-serif">(j3.2006) question about IMPORT and
derived types</font></table>
<br>
<hr noshade>
<br>
<br>
<br><tt><font size=2>The following program fails to compile with every
compiler I used<br>
to compile it including Sun's:<br>
<br>
MODULE MOD<br>
TYPE T1<br>
SEQUENCE<br>
TYPE(T2), POINTER :: P<br>
END TYPE<br>
TYPE T2<br>
SEQUENCE<br>
INTEGER I<br>
END TYPE<br>
END<br>
<br>
PROGRAM MAIN<br>
USE MOD, T3 => T1, T4 => T2<br>
TYPE T1<br>
SEQUENCE<br>
TYPE(T2), POINTER :: P<br>
END TYPE<br>
INTERFACE SUBR<br>
SUBROUTINE SUBR1(X)<br>
IMPORT T3<br>
TYPE(T3) X<br>
END SUBROUTINE<br>
SUBROUTINE SUBR2(X)<br>
IMPORT T1<br>
TYPE(T1) X<br>
END SUBROUTINE<br>
END INTERFACE<br>
TYPE T2<br>
SEQUENCE<br>
REAL X<br>
END TYPE<br>
END<br>
<br>
SUBROUTINE SUBR1(X)<br>
USE MOD<br>
TYPE(T1) X<br>
END<br>
<br>
SUBROUTINE SUBR2(X)<br>
TYPE T1<br>
SEQUENCE<br>
TYPE(T2), POINTER :: P<br>
END TYPE<br>
TYPE T2<br>
SEQUENCE<br>
REAL X<br>
END TYPE<br>
TYPE(T1) X<br>
END<br>
<br>
The problem, of course, is the definition of the derived<br>
type T2 following the interface block. Section 12.3.2.1<br>
of the Fortran 2003 standard says regarding the IMPORT<br>
statement<br>
<br>
If an entity that is made accessible by this means<br>
is accessed by host association and is defined in<br>
the host scoping unit, it shall be explicitly<br>
declared prior to the interface body.<br>
<br>
That clearly requires T1 and T3 to be defined prior to the<br>
interface body, but it does not require T2 to be defined<br>
prior to the interface body. Therefore, the program appears<br>
to be standard conforming. Have I missed something?<br>
<br>
Bob Corbett<br>
_______________________________________________<br>
J3 mailing list<br>
J3@j3-fortran.org<br>
</font></tt><a href="http://j3-fortran.org/mailman/listinfo/j3"><tt><font size=2>http://j3-fortran.org/mailman/listinfo/j3</font></tt></a><tt><font size=2><br>
</font></tt>
<br>
<br>