Fortran 2000 draft is out for commenting --
I was today asked about the Fortran 2000 standard. The draft is available by ftp in various formats (see the README file). Using Google
search with the keywords Fortran
2000 draft you find my previous posting pointing to Slashdot.
It will be 1-3 years until this standard is accepted for general use.
The first compilers will probably appear within one year, but
getting a really efficient and trustworthy compiler will take
2-3 years more. Even then you should use the current Fortran 95 standard, unless you need the new features, for example
object-oriented programming.
Here are some details about the draft standard:
Fortran 2000 contains several extensions to Fortran 95; among them are:
(1) Derived-type enhancements: parameterized derived types (allows the kind, length, or shape
of a derived type[base ']s components to be chosen when the derived type is used), mixed component
accessibility (allows different components to have different accessibility), public entities
of private type, improved structure constructors, and finalizers.
(2) Object oriented programming support: enhanced data abstraction (allows one type to extend
the definition of another type), polymorphism (allows the type of a variable to vary
at runtime), dynamic type allocation, SELECT TYPE construct (allows a choice of execution
flow depending upon the type a polymorphic object currently has), and type-bound
procedures.
(3) The ASSOCIATE construct (allows a complex expression or object to be denoted by a
simple symbol).
(4) Data manipulation enhancements: allocatable components, deferred type parameters, VOLATILE
attribute, explicit type specification in array constructors, INTENT specification of
pointer arguments, specified lower bounds of pointer assignment and pointer rank remapping,
extended initialization expressions, MAX and MIN intrinsics for character type, and
enhanced complex constants.
(5) Input/output enhancements: asynchronous transfer operations (allows a program to continue
to process data while an input/output transfer occurs), stream access (allows 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, the FLUSH statement,
named constants for preconnected units, regularization of input/output keywords, and access
to input/output error messages.
(6) Procedure pointers.
(7) Scoping enhancements: the ability to rename defined operators (supports greater data abstraction)
and control of host association into interface bodies.
(8) Support for IEC 60559 (IEEE 754) exceptions and arithmetic (to the extent a processor[base ']s
arithmetic supports the IEC standard).
(9) Interoperability with the C programming language (allows portable access to many libraries
and the low-level facilities provided by C and allows the portable use of Fortran libraries by
programs written in C).
(10) Support for international usage: (ISO 10646) and choice of decimal or comma in numeric
formatted input/output.
(11) Enhanced integration with the host operating system: access to command line arguments
and environment variables, and access to the processor[base ']s error messages (improves the ability
to handle exceptional conditions).
The good news is that the new standard is fully compatible with
the current Fortran 95 standard:
Except as identified in this section, this standard is an upward compatible extension to the preceding
Fortran International Standard, ISO/IEC 1539:1997 (Fortran 95). Any standard-conforming Fortran 95
program remains standard-conforming under this standard. The following Fortran 95 features may have
different interpretations in this standard:
(1) Earlier Fortran standards had the concept of printing, meaning that column one of formatted output had special meaning for a processor-dependent (possibly empty) set of logical
units. This could be neither detected nor specified by a standard-specified means. The
interpretation of the first column is not specified by this standard.
(2) This standard specifies a different output format for real zero values in list-directed and namelist output.
|
|