Progress with Fortran 2000

The Fortran 95 standard was finally published in November 1997 although the technical work had essentially been completed early in 1996. During 1995 and 1996 countries participating in the ISO Working Group on Fortran, whose full title is ISO IEC/JTC1/SC22/WG5, had been collecting requirements for the next revision. Whereas Fortran 95 had been conceived as a minor revision of Fortran 90, Fortran 2000 was to have more wide-ranging extensions. In the event, time and resource constraints limited the design quite severely. Even then, the current schedule envisages the committee draft being completed in August 2000 and the standard not being formally approved until November 2002.

The system of working for the past ten years has been that the ISO group specifies the requirements and it delegates detailed development to `development bodies', which are typically but not necessarily based in one country for practical reasons. The `primary development body' so far has always been the NCITS committee J3, better known under its former name X3J3. Development bodies for smaller projects, such as for the three technical reports mentioned below, have been subsets of WG5 members; two project editors were based in the UK and one in Germany.

In February 1997 WG5 sifted the countries' proposals: it specified the items in table 1 to be mandatory requirements for Fortran 2000 and those in table 2 to be minor technical enhancements to be implemented as resources permitted. The current working rule is that MTEs completed by February 1999 will be incorporated in Fortran 2000. Detailed work had started earlier on three high priority items (allocatable components, floating point exception handling and interoperability with C). These were not passed to the primary development body but were made the subject of ISO Technical Reports, worked on by subgroups of WG5 members. The intention was that these reports could be published ahead of the standard and their proposals possibly incorporated into later versions of Fortran 95 compilers, thus giving earlier access to these features. Interoperability with C turned out to be both a far greater problem than had been envisaged and so intrinsic to the language design that it was not really amenable to being treated as a separable item. It was therefore decided at the July 1997 meeting of WG5 to abandon the technical report route and to ask J3 to develop interoperability as an ordinary mandatory requirement.

In addition a separate part, Part 3, of the Fortran Standard is being developed to provide conditional compilation facilities in a Fortran-like manner. This is has recently passed its first ballot within ISO and is scheduled to become a standard in the first part of 1999.

J3 has been instructed by WG5 to develop the interval arithmetic proposals as a separate part of the standard if it should find that otherwise the standard would be significantly delayed.

Part 2 of the standard, Varying Length Character Strings in Fortran, is being revised so that the non-normative sample implementation (in Fortran 90) may take advantage of the newer features in Fortran 95. However, this has revealed a problem with derived type assignment which is to be corrected in Fortran 2000.

Table 1 - Mandatory requirements for Fortran 2000
Mandatory Requirement Reference Progress
Allocatable componentsTR15581 Approved by ISO ballot 04/98 subject to minor editing
Asynchronous I/O R.2 complete
Constructors/destructors R.7 target08/98
Derived type I/O R.1 complete
Floating point exception handlingTR15580 Approved by ISO ballot 04/98
InheritanceR.6atarget 05/98
Internationalization R.8 target 11/98
Interoperability with CR.9 target 08/98
Interval arithmeticR.4 target 11/98
Parameterized derived typesR.5 target 05/98
Polymorphism R.6btarget 08/98
Procedure pointers R.3 complete

An R number is the reference used by the J3 committee; a TR number is the ISO technical report number.

Table 2 - Minor technical enhancements for Fortran 2000
Minor Technical Enhancement Reference Progress
Access to status error messagesB.6exploratory work only
Allow PUBLIC entities of PRIVATEM.20complete
Command line arguments (later with environmental variables separated to be new item)M.18acomplete
Environmental variablesM.18btarget 11/98
Derived type encapsulation (later renamed derived type assignment fix) M.16target 08/98
Enhanced complex constantsM.17complete
Extend max/min intrinsics to characterM.5complete
Extended initialization expressionsM.6complete
Generic rate_count in system_clockM.3complete
IEEE I/O rounding inquiry intrinsicsB.7exploratory work only
Increased statement lengthM.1complete
Intent for pointer argumentsM.2complete
Mixed case syntax elementsM.7complete
Named scratch filesM.10complete
Passing specific/generic names already in Fortran 95
PUBLIC and PRIVATE derived type componentsB.3exploratory work only
Renaming defined operatorsM.15target 11/98
Specifying pointer lower boundsM.4complete
Stream I/OB.4exploratory work only
VOLATILE attributeM.19target 05/98

B and M numbers are the references used by the J3 committee; B items have lower priority than M and are promoted to have M numbers when work starts on them.

Much information about standards is available on the world wide web, on the understanding that the material is to used for technical development and not for commercial purposes. ISO has a web site at http://www.iso.org/iso/home.htm, which amongst other things lists the ISO standards and shows the committee structure. WG5's site is at http://www.nag.co.uk/sc22wg5/. Information about J3 is to be found at http://www.j3-fortran.org/.

David Muxworthy
Secretary, BCS Fortran Specialist Group
21 April 1998

Links updated August 2001 and October 2009.


Details of current Fortran standardization activities can be found in WG5's own World Wide Web pages.


Valid XHTML 1.0! Comments on this or any other of the Group's pages should be sent by email to the FSG Web Editor.