ISO/IEC JTC1/SC22/WG5 N1459 From Dan Nagle To WG5 Subject Fortran 2000 Summary With almost no exceptions (1.5.1), Fortran 2000 is a superset of Fortran 95. Fortran 2000 contains several extensions to Fortran 95, these include the following. o Derived type enhancements, specifically parameterised derived types (allowing the kind, length or dimension of a derived type's components to be chosen when the derived type is used), mixed component accessibility (where different components have different accessibility), public entities of private type, improved constructors and finalizers (destructors). o Object oriented programming support, specifically extensible types (providing inheritance), inheritance (where one type extends the definition of another type), polymorphism (where the type of a variable may vary at runtime), dynamic type allocation and type-bound procedures. o The ASSOCIATE construct (which allows a complex expression or object to be denoted by a simple symbol) & SELECT TYPE construct (which allows a choice of execution flow depending upon which type a polymorphic object currently has). o Data manipulation enhancements, specifically allocatable components, deferred type parameters, VOLATILE attribute (where the processor is warned to always use the value of a datum found in memory, allowing the value in memory to change by a means beyond the program itself), explicit type specification in array constructors, INTENT specification of pointer arguments, specified lower bounds of pointer assignment and pointer rank remapping, extended initialisation expressions, MAX & MIN intrinsics for character type and enhanced complex constants. o Input/output enhancements, specifically asynchronous transfer operations (where a program can continue to process data while an input/output transfer occurs), stream access (which facilitates access to a file without reference to any record structure), user specified transfer operations for derived types, user specified control of rounding during format conversions, named scratch files, named constants for preconnected units, and access to input/output error messages. o Pointers to procedures & abstract interfaces (which give names for the specified interfaces). o Scoping enhancements, specifically the ability to rename defined operators (which supports greater data abstraction), and control of host association into interface bodies. o Support for IEC 60559 (formerly IEEE 754) exceptions & arithmetic (to the extent a processor's arithmetic supports the IEC standard). o Interoperability with the C programming language (allowing portable access to many libraries and the low-level facilities provided by C and allowing the portable use of Fortran libraries by programs written in C). o Support for international usage (via support for Unicode ISO 10646) & point v. comma in numeric formatted i/o. o More complete integration with the host operating system, specifically access to command line arguments (where supported) and environment variables (where supported), and access to the processor's error messages (which allows the program to better process exceptional conditions).