Cover image for Fortran 90/95 explained
Fortran 90/95 explained
Metcalf, Michael, 1931-
Personal Author:
Second edition.
Publication Information:
Oxford ; New York : Oxford University Press, 1999.
Physical Description:
xv, 341 pages : illustrations ; 24 cm
General Note:
Includes index.
Added Author:
Format :


Call Number
Material Type
Home Location
Item Holds
QA76.73.F28 M49 1999 Adult Non-Fiction Central Closed Stacks

On Order



The success of Fortran as the predominant language in the field of scientific and numerical computing is due, in part, to its steady evolution. Following the publication of standards in 1966, 1977 and 1991, the committee responsible for their development, J3, worked in conjunction with an ISOcommittee to enhance Fortran 90, as the 1991 standard was known, creating Fortran 95. Fortran 95 was published in 1997, and, in addition to Fortran 90's new features for array processing, abstract data types, modules, and pointers, it contains additional features to keep it aligned with HighPerformance Fortran, as well as some minor enhancements.This volume represents a revision of the first edition of Fortran 90/95 Explained. The Fortran 95 material is now fully integrated with that of Fortran 90, while maintaining a clear distinction between the two language levels. Chapters on enhanced data type facilities and floating-point exceptionhandling, two optional enhancements to Fortran 95, have been added. It is a complete and authoritative description of Fortran 90/95, and is intended for new and existing users, and for all those involved in scientific and numerical computing.

Author Notes

Michael Metcalf worked for many years at CERN, Geneva. He is the author of a range of publications, including the books The F programming language and Effective Fortran 77 (Oxford University Press), and FORTRAN Optimization (Academic Press). He was the Editor of the Fortran 90 standard.Professor Michael Metcalf, Karntner Ring 10 1010 Vienna Austria Tel: 0043 1503 7940 John Reid is an independent contractor and is well known as a numerical analyst: he is a co-author of Direct methods for sparse matrices (Oxford University Press). He served as Secretary of X3J3 and played aleading role in the development of Fortran 90, Fortran 95, and the exception-handling extensions. Professor J.K. Reid Computing and Information Systems Dept Rutherford Appleton Laboratory Chilton Oxon OX11 0QX

Table of Contents

1 Whither Fortran?
1.1 Fortran history
1.2 The drive for the Fortran 90 standard
1.3 Language evolution
1.4 Fortran 95
1.5 Beyond Fortran 95
1.6 Conformance
2 Language elements
2.1 Introduction
2.2 Fortran character set
2.3 Tokens
2.4 Source form
2.5 Concept of type
2.6 Literal constants of intrinsic type
2.6.1 Integer literal constants
2.6.2 Real literal constants
2.6.3 Complex literal constants
2.6.4 Character literal constants
2.6.5 Logical literal constants
2.7 Names
2.8 Scalar variables of intrinsic type
2.9 Derived data types
2.10 Arrays of intrinsic type
2.11 Character substrings
2.12 Objects and subobjects
2.13 Pointers
2.14 Summary
2.15 Exercises
3 Expressions and assignments
3.1 Introduction
3.2 Scalar numeric expressions
3.3 Defined and undefined variables
3.4 Scalar numeric assignment
3.5 Scalar relational operators
3.6 Scalar logical expressions and assignments
3.7 Scalar character expressions and assignments
3.8 Structure constructors and scalar defined operators
3.9 Scalar defined assignments
3.10 Array expressions
3.11 Array assignment
3.12 Pointers in expressions and assignments
3.13 Summary
3.14 Exercises
4 Control constructs
4.1 Introduction
4.2 The go to statement
4.3 The if statement and construct
4.3.1 The if statement
4.3.2 The if construct
4.4 The case construct
4.5 The do construct
4.6 Summary
4.7 Exercises
5 Program units and procedures
5.1 Introduction
5.2 Main program
5.3 The stop statement
5.4 External subprograms
5.5 Modules
5.6 Internal subprograms
5.7 Arguments of procedures
5.7.1 Pointer arguments
5.7.2 Restrictions on actual arguments
5.7.3 Arguments with the target attribute
5.8 The return statement
5.9 Argument intent
5.10 Functions
5.10.1 Prohibited side-effects
5.11 Explicit and implicit interfaces
5.12 Procedures as arguments
5.13 Keyword and optional arguments
5.14 Scope of labels
5.15 Scope of names
5.16 Direct recursion
5.17 Indirect recursion
5.18 Overloading and generic interfaces
5.19 Assumed character length
5.20 The subroutine and function statements
5.21 Summary
5.22 Exercises
6 Array features
6.1 Introduction
6.2 Zero-sized arrays
6.3 Assumed-shape arrays
6.4 Automatic objects
6.5 Heap storage
6.5.1 Allocatable arrays
6.5.2 The allocate statement
6.5.3 The deallocate statement
6.5.4 The nullify statement
6.6 Elemental operations and assignments
6.7 Array-valued functions
6.8 The where statement and construct
6.8.1 Some where construct extensions (Fortran 95 only)
6.9 The forall statement and construct (Fortran 95 only)
6.10 Pure procedures (Fortran 95 only)
6.11 Elemental procedures (Fortran 95 only)
6.12 Array elements
6.13 Array subobjects
6.14 Arrays of pointers
6.15 Pointers as aliases
6.16 Array constructors
6.17 Mask arrays
6.18 Summary
6.19 Exercises
7 Specification statements
7.1 Introduction
7.2 Implicit typing
7.3 Declaring entities of differing shapes
7.4 Named constants and constant expressions
7.5 Initial values for variables
7.5.1 Initializing in type declaration statements
7.5.2 The data statement
7.5.3 Pointer initialization and the function null (Fortran 95 only)
7.5.4 Default initialization of components (Fortran 95 only)
7.6 The public and private attributes
7.7 The pointer, target, and allocatable statements
7.8 The intent and optional statements
7.9 The save attribute
7.10 The use statement
7.11 Derived-type definitions
7.12 The type declaration statement
7.13 Type and type parameter specification
7.14 Specification expressions
7.14.1 Specification expression restrictions (Fortran 90 only)
7.14.2 Specification functions (Fortran 95 only)
7.15 The namelist statement
7.16 Summary
7.17 Exercises
8 Intrinsic procedures
8.1 Introduction
8.1.1 Keyword calls
8.1.2 Categories of instrinsic procedures
8.1.3 The intrinsic statement
8.1.4 Argument intents
8.2 Inquiry functions for any type
8.3 Elemental numeric functions
8.3.1 Elemental functions that may convert
8.3.2 Elemental functions that do not convert
8.4 Elemental mathematical functions
8.5 Elemental character