X3J3/96-157 Page 1 of 2 Date: October 16, 1996 To: X3J3 From: Henry Zongaro Subject: Maintenance of the Fortran 90 standard References: X3J3/96-152, X3J3/96-112r1 I discussed the X3 ballot which was held on the withdrawal of FORTRAN 77 with a couple of people from companies who use FORTRAN 77, and one made an interesting point - that although the syntax of Fortran 90 is a superset of FORTRAN 77, there are at least two points on which the semantics of the two languages differ in a manner which would cause the results of a FORTRAN 77 program to be different with a Fortran 90 processor. In particular, there are differences in (i) the meaning of the G edit descriptor; and (ii) the behaviour of formatted input in the presence of an input record that is shorter than required. There are also situations in which Fortran 90 clarified the semantics of some features, or pinned down the requirements of what had been processor dependent features in FORTRAN 77. Since these are things that could have varied from one FORTRAN 77 processor to the next, they are somewhat less interesting. While the changes in the two features cited above are admittedly minor, they are still differences, and as such they contradict the responses to Issues 2 and 3 cited in X3J3/96-112r1: "Issue 2. There are more FORTRAN 77 products and compilers than Fortran 90 ones (Unisys) Virtually all major vendors now offer Fortran 90 compilers. 'FORTRAN 77 applications' are also Fortran 90 applications, as FORTRAN 77 is a subset of Fortran 90, and hence 'FORTRAN 77 applications' can be used with Fortran 90 compilers. Issue 3. Users have not converted to Fortran 90 - the costs don't justify the benefits (Unisys) 'FORTRAN 77 code' does not have to be converted to Fortran 90 - it already is Fortran 90. Programmers can continue to code at the FORTRAN 77 level and still use the growing number of increasingly robust and efficient Fortran 90 processors." So, although it is true that FORTRAN 77 is a subset of Fortran 90, it is not true that every FORTRAN 77 program will have the same interpretation in Fortran 90 as it had in FORTRAN 77. X3 is now faced with the issue of what to do with Fortran 90 after Fortran 95 becomes an International Standard. If X3 goes on to decide that Fortran 90 should be withdrawn as well, it will have invalidated the justification for withdrawing FORTRAN 77. This is because FORTRAN 77 is not a subset of Fortran 95; several features of FORTRAN 77 have been deleted from Fortran 95. If Fortran 90 remained a standard, it would be true that FORTRAN 77 programs would still conform to some Fortran standard; but, presuming that Fortran 95 will replace Fortran 90 as a standard in the U.S., we'll be left with the situation that some FORTRAN 77 programs will not conform to the only existing Fortran standard. As for the response to Issue 1 in X3J3/96-112r1, it should also be noted that the NIST validation suite contains programs which use features which have been deleted from Fortran 95. If X3 withdraws both FORTRAN 77 and Fortran 90, the NIST suite will no longer be an appropriate test of a Fortran compiler. If Fortran 90 is maintained as an archival standard, the NIST suite will at least be appropriate for validation against that archival standard, and FORTRAN 77 programs would continue to be standard-conforming with the archival standard. For these reasons, I would like to suggest that X3J3 vote to recommend to X3 that Fortran 90 be maintained as an archival standard after the adoption of Fortran 95 as a standard.