Clive Page's list of Fortran Resources
Last revised: 2021 March 18
Fortran95 was a relatively minor revision to Fortran90, so that
nearly all compilers for Fortran90 have now been updated to add the
small set of additional features introduced with Fortran95.
Just as with buses, so with Open Source compilers for Fortran95: you
ages for one, then two arrive at once. The two possiblilities are:
These two compilers started out with a common code base but the development
project subsequently forked. One might think this is an unfortunate thing to
happen, but in fact there now seems to be some element of competition
between the two sets of developers, and both projects are advancing
quite rapidly. In fact g95 is mostly the work of one exceptional person, Andy Vaught,
while gfortran has a larger group of programmers working part-time.
Both compilers are already pretty much adequate for everyday use:
they both support nearly every feature of Fortran-95 and a few features of
Fortran-2003 such as
stream-IO. At present (April 2007) my impression is that g95 is
slightly better at
handling some of the more baroque features of Fortran and diagnosing errors, but
gfortran is said to produce code which often executes somewhat faster. The tables
at Messrs Polydron give more details.
By the time you read this the situation may have changed, as both compilers are in
Note that when installing g95 on Windows XP it is a
good idea to install it in a subdirectory of the file system root such
C:\g95\ . There is as yet not much documentation on either compiler. I
trying to revise my old book but decided that so much needed to be
that it would be easier to start from scratch. I am working on this
slowly, but it is at present only about a quarter complete.
Besides these Open Source compilers, there are two commercial
which can be used free of charge for personal use under limited
Information on a large number of compilers for Fortran can be found on
Michel Olagnon's invaluable
Fortran 90 List.
- Users of Linux can try the Intel Fortran compiler for personal use.
- Users of Windows can try the Salford
FTN95 Personal Edition compiler
for evaluation or personal use.
NEW Portable GIF driver for PGPLOT
The file gidriv.f which is part of the PGPLOT distribution uses %val constructs which are non-standard and seem to fail on 64-bit systems. A fully portable replacement
gidriv.f90 is available instead. Note that this needs to be compiled by a compiler which supports Fortran90 and also stream-IO such as
g95 or gfortran.
How to use PGPLOT Graphics Library with Fortran95 on Windows-XP
PGPLOT is an excellent mature and well-documented library of grapical routines but has previously been hard to install on Windows to use with modern Fortran compilers such as g95 and gfortran.
See this how-to document for instructions.
Revised notes on Stream I/O in
Stream I/O was introduced in the Fortran2003 Standard but is already supported by
the g95 and gfortran compilers. This is an important facility for handling files
written by non-Fortran software packages. I have written
some notes on Stream I/O.
Using DISLIN to put a GUI Front-end on a Fortran Program
The graphics library DISLIN has a Fortran90 interface. It is a commercial package but the licence permits use free of charge for non-commercial purposes. DISLIN can also be used to create a graphical user interface and
I have written some notes on how to do this here.
Fortran77 Programmers Converting to Fortran90/95
Here are some notes from a Fortran90 course for Fortran77
that I have given a few times, in HTML
or in PDF
and a document called Fortran90 for
Fun and Profit (PostScript format) which gives a summary of the
most useful new features of Fortran90.
The University of
Liverpool has a Fortran95 course on-line.
They also have
High Performance Fortran information and links.
High Performance Object-oriented Fortran90 is covered here.
Fortran77 to Fortran90 style converters
Note that, with some extremely minor exceptions, the whole of Fortran77
is a subset of Fortran90, so that no conversion of a standard
conforming Fortran77 program is necessary. The style converters
listed here may be useful, however, as they convert the source from
fixed to free-format style, and do other syntax conversions which may
make subsequent program maintenance simpler.
Note that I have only used the first two of these myself; they have
somewhat different capabilities, but I have found both very useful.
- Metcalf and Reid's conversion program convert.f90
which has the useful option of being able to create interface blocks.
- Alan Miller's program to_f90 which attempts more ambitious
conversions such as adding INTENTs for subprogram arguments (and
succeeds) can be found on the site of Jason Belvins .
The F Programming Language
The F language is a subset of Fortran90 with, esssentially, all the new
features included but all the antique stuff left out. It is available
for Linux, Solaris, and Windows, and can be downloaded free from The Fortran Company
The new Standard is now fixed. for a good description
of its new features The
New Features of Fortran2008 by John Reid.
The site of The Fortran
Committee covers their current activities.
The Fortran77 Standard was in use for a long time but has long been
superseded by Fortran90 and Fortran95. The latest Standard, to be
is released but it the first compilers which support it
fully are not expected before late 2008.
Now that there are several Fortran95 compilers available, it no longer
makes sense to use those which only support Fortran77, such as GNU's
The version which I formerly packaged for downloading does not work
Windows XP (only under operating systems which are now obsolescent such
Around 1987 I wrote a slim volume called Professional Programmer's
Guide to Fortran77 which was published by Messrs Pitman. It is
both out-of-date and out-of-print. Although it is not much use any
it is still available on-line, which may be printed our downloaded in
Another Fortran77 textbook is available on-line written by Ian
Chivers and Jane Sleightholme of King's College London: their site
has links to many other useful resources.
Fortran77 syntax checking - FTNCHEK
Since Fortran77 has more pitfalls than newer forms of the language, I
strongly recommend using a syntax checker on every new or modified
Fortran77 program. The program called FTNCHEK from Robert Moniot
and colleagues does an excellent job and is entirely free. You
download the program for any of a range of operating systems from http://www.dsm.fordham.edu/~ftnchek/
General Information on Fortran:
Algorithms and procedures in Fortran:
- Alan Miller's site (now fortunaely preserved by Jason Blevins) includes many useful routines, especially statistical ones and
also a Fortran free-format style convertor
- The Numerical Algorithms Group
sells software but also has a repository of freely-available Fortran
- The famous text Numerical
Recipes in Fortran is now available on-line, in either Postscript
PDF formats (but this is of course the old Fortran77 edition). Note the
- Numerical Recipes software has, however, attracted some
criticism, so you might want to look for alternatives.
Companies with useful on-line information include:
Fortran, HTML, Java, C, and C++
To generate HTML from Fortran90 you can use Fortran2html
To combine Java and Fortran check out
a Java interface on Fortran code
The call C from Fortran or vice-versa you can to use the cfortran package
of Burkhard Burow.
To mix C++ and Fortran look at the site of .
are links to a
of C and C++ critiques here. and here are documents discussing the
strengths and weaknesses of C++ and Fortran 90 from Purple
CGI programming in Fortran
Some useful resources include:
I have used
for many years and recommend it highly.
See this how-to document for instructions on installing it on Windows-XP.
Other people have recommended PLPLOT which looks somewhat
More advanced packages for X-windows systems include the YGL
library which has a Fortran interface.
f90gl is a public
implementation of the official Fortran 90 bindings for the OpenGL
graphics system now supported very widely.
Makefiles for Fortran Compilation
A number of scripts have been posted to generate files for use with the
Unix make utility, but I have not been able to test most of
Miscellaneous Fortran Hints
Converting text to upper-case
A simple Fortran90 function to do this is here:
function upcase(string) result(upper)
character(len=*), intent(in) :: string
character(len=len(string)) :: upper
integer :: j
do j = 1,len(string)
if(string(j:j) >= "a" .and. string(j:j) <= "z") then
upper(j:j) = achar(iachar(string(j:j)) - 32)
upper(j:j) = string(j:j)
end function upcase
But the conversion can be done in a single statement if you try hard
enough, for example:
Character (len=20) Function Up (string)
Up = &
(ichar('a')-ichar('A')) ), &
transfer(string,"x",len(string)) , &
transfer(string,"x",len(string)) >= "a" .and. &
transfer(string,"x",len(string)) <= "z"), repeat("x", len(string)))
end function Up
Wild-card string matching
Here is a Fortran function which does wild-card matching to a pattern,
which may contain "?" to match any single character, and "*" to match
or more consecutive characters of any type. It can be compiled by any
Fortran90 compiler, including g95. A test program is provided at the
beginning of the file. WARNING: this code does not yet work in all cases, at least one
bug remains. Use at your own risk while work continues.
Anyone who has copied the function previously linked here called
match_wild.f should note that it contained some bugs, and a revised
called match_wild.f90 should be used
I am very grateful to Rolf Sander for finding and fixing the mistakes.
Reading single keystrokes from Fortran
There is no portable way of doing this, although many vendor's
compilers provide a specific routine to do this, but this file sys_keyin.c is a few lines of C which works
Unix systems (on some you may need to remove the underscores from the
end of the function names).
Reading command-line arguments
There was nothing built-in to Fortran95 to read the command-line
but Fortran2003 solves this. Both g95 and gfortran compilers the
following Fortran2003 procedures:
If you use a compiler which does not yet support these, then
a package from Lawson Wakefield provides an excellent portable
versions of these routines for about 80 different compilers.
- COMMAND_ARGUMENT_COUNT() - This is an integer function returning the
of argument strings on the command-line (excluding the initial
command-name if there is one).
- CALL GET_COMMAND_ARGUMENT(number, value, length, status) - This is a
subroutine returning the string value of the Nth argument (argument 0
being the command-name). The length (optional) returns the length of the
value returned, and status (also optional) returns 0 normally, or non-zero
if there is an error such as a non-existing argument).
Acknowlegements: The text of my old Fortran book was originally
using WordPerfect, and then converted to Latex. The further
conversion to HTML used
tth which seems to me one of the best such converters.
Comments and corrections (especially noting broken links) to:
clive.page [at-sign] le.ac.uk