Fortran 2003 Features
The following Fortran 2003 features are new in this release:
- BIND attribute and statement
- Language binding can be specified in a FUNCTION or SUBROUTINE statement, or when defining a derived type
- IS_IOSTAT_END intrinsic function
- IS_IOSTAT_EOR intrinsic function
- INTRINSIC and NONINTRINSIC can be specified for modules in USE statements
- ASYNCHRONOUS attribute and statement
- VALUE attribute and statement
- Asynchronous I/O can be specified in an OPEN or INQUIRE statement
- An ID can be specified for a pending data transfer operation
The following Fortran 2003 features are also supported:
- User-defined operators can be renamed in USE statements
- MOVE_ALLOC intrinsic subroutine
- PROTECTED attribute and statement
- Pointer objects can have the INTENT attribute
- GET_COMMAND intrinsic
- GET_COMMAND_ARGUMENT intrinsic
- COMMAND_ARGUMENT_COUNT intrinsic
- GET_ENVIRONMENT_VARIABLE intrinsic
- Allocatable components of derived types
- Allocatable dummy arguments
- Allocatable function results
- VOLATILE attribute and statement
- Names of length up to 63 characters
- Statements up to 256 lines
- A named PARAMETER constant may be part of a complex constant
- In all I/O statements, the following numeric values can be of any kind: UNIT=, IOSTAT=
- The following OPEN numeric values can be of any kind: RECL=
- The following READ and WRITE numeric values can be of any kind: REC=, SIZE=
- The following INQUIRE numeric values can be of any kind: NEXTREC=, NUMBER=, RECL=, SIZE=
- Recursive I/O is allowed when the new I/O being started is internal I/O that does not modify any internal file other than its own
- IEEE infinities and Nans are displayed by formatted output as specified by Fortran 2003
- In an I/O format, the comma after a P edit descriptor is optional when followed by a repeat specifier
- The following intrinsics take an optional KIND= argument: ACHAR, COUNT, IACHAR, ICHAR, INDEX, LBOUND, LEN, LEN_TRIM, MAXLOC, MINLOC, SCAN, SHAPE, SIZE, UBOUND, VERIFY
- Square brackets [ ] are permitted to delimit array constructors instead of (/ /)
- The Fortran character set has been extended to contain the 8-bit ASCII characters ~ \ [ ] ` ^ { } | # @
For more information, see New Language Features.