The Queen's University of Belfast

Parallel Computer Centre
[Next] [Previous] [Top]
Fortran 90
A Conversion Course
for Fortran 77 Programmers
Student Notes
Authors
S Ramsden, F Lin
Manchester and North HPC T&EC
M A Pettipher, G S Noland, J M Brooke
Manchester Computing Centre, University of Manchester
Author's Acknowledgements
These student notes were developed using the Manchester Computing Centre Fortran 90 course, which was compiled by J M Brooke, G S Noland, and M A Pettipher as a basis.
Useful comments were also provided by the following: T L Freeman, J Gajjar and A J Grant (The University of Manchester), and A Marshall and J S Morgan (The University of Liverpool).
Table of Contents
- 1 - Introduction
-
- 1.1 - History
-
- 1.2 - Objectives
-
- 1.3 - Language Evolution
-
- 1.4 - New Features
-
- 1.5 - Organisation
-
- 1.6 - Coding Convention
-
- 2 - Sources, Types and Control Structures
-
- 2.1 - Source Form
-
- 2.2 - Program and Subprogram Names
-
- 2.3 - Specifications
-
- 2.4 - Strong Typing
-
- 2.5 - The Concept of KIND
-
- 2.5.1 - Real Values
-
- 2.5.2 - Integer Values
-
- 2.5.3 - Intrinsics
-
- 2.5.4 - Complex
-
- 2.5.5 - Logical
-
- 2.5.6 - Character
-
- 2.6 - Derived Types
-
- 2.6.1 - Arrays of a Derived Type
-
- 2.6.2 - Constants of Derived Types
-
- 2.6.3 - Derived Type Examples
-
- 2.7 - Control Statements
-
- 2.7.1 - IF Statements
-
- 2.7.2 - DO Loop
-
- 2.7.3 - DO WHILE
-
- 2.7.4 - EXIT and CYCLE
-
- 2.7.5 - CASE Construct
-
- 2.7.6 - GOTO
-
- 2.8 - Exercises
-
- 3 - Procedures and Modules
-
- 3.1 - Program Units
-
- 3.2 - Procedures
-
- 3.2.1 - Internal Procedures
-
- 3.2.2 - Interface Blocks
-
- 3.2.3 - INTENT
-
- 3.2.4 - Keyword Arguments
-
- 3.2.5 - Optional Arguments
-
- 3.2.6 - Derived Types as Procedure Arguments
-
- 3.2.7 - Procedures as Arguments
-
- 3.2.8 - RESULT Clause for Functions
-
- 3.2.9 - Array-valued Functions
-
- 3.2.10 - Recursion
-
- 3.2.11 - Generic Procedures
-
- 3.3 - Modules
-
- 3.3.1 - Global Data
-
- 3.3.2 - Module Procedures
-
- 3.3.3 - Generic procedures
-
- 3.3.4 - Private and Public Attributes
-
- 3.4 - Overloading
-
- 3.4.1 - Overloading Operators
-
- 3.4.2 - Defining Operators
-
- 3.4.3 - Assignment Overloading
-
- 3.5 - Scope
-
- 3.5.1 - Labels
-
- 3.5.2 - Names
-
- 3.5.3 - Example of Scoping Units
-
- 3.6 - Program Structure
-
- 3.6.1 - Order of Statements
-
- 3.6.2 - Interface Blocks
-
- 3.6.3 - Summary
-
- 3.7 - Exercises
-
- 4 - Array Processing
-
- 4.1 - Terminology and Specifications
-
- 4.2 - Whole Array Operations
-
- 4.3 - Elemental Intrinsic Procedures
-
- 4.4 - WHERE Statement
-
- 4.5 - Array Sections
-
- 4.5.1 - Simple Subscripts
-
- 4.5.2 - Subscript Triplets
-
- 4.5.3 - Vector Subscripts
-
- 4.6 - Array Assignment
-
- 4.7 - Recursion
-
- 4.8 - Element Renumbering
-
- 4.9 - Zero Sized Arrays
-
- 4.10 - Array Constructors
-
- 4.11 - Allocatable Arrays
-
- 4.12 - Automatic Arrays
-
- 4.13 - Assumed Shape Arrays
-
- 4.14 - Array Intrinsics
-
- 4.15 - Array Example
-
- 4.16 - Exercises
-
- 5 - Pointer Variables
-
- 5.1 - What is a Pointer
-
- 5.2 - Specifications
-
- 5.3 - Pointer Assignments
-
- 5.3.1 - Versus Ordinary Assignments
-
- 5.3.2 - Array Pointers
-
- 5.4 - Pointer Association Status
-
- 5.5 - Dynamic Storage
-
- 5.6 - Pointer Arguments
-
- 5.7 - Pointer Functions
-
- 5.8 - Arrays of Pointers
-
- 5.9 - Linked List
-
- 5.10 - Exercises
-
- 6 - Input/Output
-
- 6.1 - Non-advancing I/O
-
- 6.2 - INQUIRE by I/O List
-
- 6.3 - NAMELIST
-
- 6.3.1 - Example
-
- 6.4 - New Edit Descriptors
-
- 6.4.1 - Example
-
- 6.5 - New Statement Specifiers
-
- 6.6 - Exercises
-
- 7 - Intrinsic Procedures
-
- 7.1 - Elemental Procedures
-
- 7.1.1 - Elemental Functions
-
- 7.1.2 - Elemental Subroutine
-
- 7.2 - Inquiry Functions
-
- 7.3 - Transformational Functions
-
- 7.4 - Non Elemental Intrinsic Subroutines:
-
- 7.5 - Array Intrinsic Procedures
-
- 7.6 - Exercises
-
- 8 - Redundant Features
-
- 8.1 - Source Form
-
- 8.2 - Data
-
- 8.3 - Control
-
- 8.4 - Procedures
-
- 8.5 - Input/Output
-
- 9 - Further Development
-
- 9.1 - Fortran 95
-
- 9.2 - Parallel Computers
-
- 9.2.1 - High Performance Fortran
-
- 9.2.2 - Message Passing Interface
-
- 10 - References
-
[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