The Queen's University of Belfast

Parallel Computer Centre
[Next] [Previous] [Top]
Introduction
Introduction
Topics
History
- 1957 IBM Fortran
- 1966 Fortran 66 standard
- 1978 Fortran 77 standard
- 1991 Fortran 90 standard
Objectives
- Language evolution
- Standardise vendor extensions
- Modernise the language
- Ease-of-use improvements through new features
such as free source form and derived types
- Space conservation of a program with dynamic memory allocation
- Modularisation through defining collections called modules
- Numerical portability through selected precision
- Provide data parallel capability
- Parallel array operations for better use of vector and parallel processors
- Compatibility with Fortran 77
- Fortran 77 is a subset of Fortran 90
- Improve safety
- Reduce risk of errors in standard code
- Standard conformance
- Compiler must report non standard code and obsolescent features
Major new features
- Array processing
- Dynamic memory allocation
- Modules
- Procedures:
- Optional/Keyword Parameters
- Internal Procedures
- Recursive Procedures
- Pointers
Other new features
- Source form
- Specifications/IMPLICIT NONE
- Parameterised data types (KIND)
- Derived types and operator overloading
- Control structures
- New intrinsic functions
- New I/O features
Obsolescent features
May be removed at the next major revision:
- Arithmetic IF
- REAL and DOUBLE precision DO variables and control expressions
- Shared DO termination, and DO termination on a statement other than on a CONTINUE or an END DO statement
- ASSIGN and assigned GO TO statements
- Assigned FORMAT specifiers
- Branching to END IF from outside IF block
- Alternate RETURN
- PAUSE statement
- H edit descriptor
Availability
Fortran 90 compilers
- Cray CF90 - YMP (EL98), vectorising and autotasking, but limited messages and some intrinsics not tuned
- DEC Fortran 90 - DEC OSF/1 AXP, including HPF extensions
- EPC Fortran 90 - SPARC Solaris 1X and 2X, IBM RS/6000, Intel 3/486, Motorola 88000
- IBM XLF V3 - RISC System 6000
- Lahey LF90 - for DOS, Windows
- Microway - DOS, OS/2, Unix
- NA Software F90+ - 386/486, Sparc, T800, T9000
- NAG f90 - Variety of Unix platforms, and VAX VMS. Uses C as intermediate language
- Pacific Sierra VAST-90 - Uses F77 as intermediate language
- Parasoft - Uses F77 as intermediate language
- Salford FTN90 - PC implementation of NAG f90, direct generation of object code
References
- Information Technology - Programming Languages - Fortran
on-line or paper, the official standard,
ISO/IEC 1539:1991 or ANSI x3.198-1992
- Fortran 90 Handbook
Complete ANSI/ISO Reference
J C Adams et. al., McGraw-Hill, 1992
- Programmer's Guide to Fortran 90
2nd edition, W S Brainerd et. al., Unicomp, 1994
M Counihan, Pitman, 1991
T M R Ellis et. al., Wesley, 1994
- Fortran 90 for Scientists and Engineers
B D Hahn, Edward Arnold, 1994
J Kerrigan, O'Reilly and Associates, 1993
M Metcalf & J Ried, Oxford University Press, 1992
- Programming in Fortran 90
J S Morgan & J L Schonfelder, Alfred Waller Ltd., 1993
- Programming in Fortran 90
I M Smith, Wiley
Resource list
The compiled resource list is available on WWW:
http://www.hpctec.mcc.ac.uk/hpctec/courses/Fortran90/resource.html
which has links to:
- Fortran 90 FAQ
- Tutorials and articles available on WWW
- NAG Fortran 90 software repository
- Fortran 90/HPF email discussion group
- Fortran newsgroup in Netnews/Usenet
- Fortran market
Fortran 90 at MCC
- Cray EL98
Compile with f90
- NAG f90 on Cray CS6400
Compile with f90
- Salford FTN90 on fileserver MCC.FS1
Compile and run with ftn90/lgo
- IBM
Compile with xlf90 (Note default code generated for ibmb, ibmc, ibmd, NOT ibma)
Coding convention
Recommended by NAG and others
- Put all Fortran 90 keywords and intrinsic function names in upper case, everything else in lower case
- Indent by 2 columns in the body of program units and INTERFACE blocks, DO-loops, IF-blocks, CASE-blocks etc.
- Always include the name of a program, a subroutine and a function on its END statement
- In USE statements, use the ONLY clause to document explicitly all entities which are actually accessed from that module
- In CALL statement and function references, always use argument keywords for optional arguments
[Next] [Previous] [Top]
All documents are the responsibility of, and copyright, © their authors and do not represent the views of The Parallel Computer Centre, nor of The Queen's University of Belfast.
Maintained by Alan Rea, email A.Rea@qub.ac.uk
Generated with CERN WebMaker