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