Programming
  by GIUSEPPE CIABURRO     

Compilers

There was until recently no free full F90 compiler. A free f90 and HPF compiler for linux from Pacific Sierra appeared end of May 1998. Also, some compilers restricted to modern subsets of the language might be free. These are ELF90 and F from Imagine1 for Linux. Compilers for these subsets are also available for other platforms, but presently not for free.

Absoft Pro Fortran v6.0 and Pro FortranMP - for Linux (native/intel), Power Mac, UNIX and Windows (NT, 95, 3.1) - Both releases include full F90 compilers with most [f77] workstation extensions. Pro FortranMP includes auto parallelizer for dual processor systems. Upgrades to more processors and OpenMP available option. Pro Fortrans also include F77/C/C++ compilers and complete developement toolset.
ACE f90 and HPF - for Parsytec PowerPC-based machines.
Apogee - highly optimizing Apogee-Fortran 90, C-DAC Fortran 90 (comes with debugger). Both compilers are for SPARC architectures.
APR xHPF 2.1 - HPF compiler ([Cray]T3D,[IBM]SP-2,[Intel] Paragon, [Dec Alpha]3000/900 275Mhz,[SGI Power Challenge]MIPS R8000, [Sun SPARC]2000 40Mhz)
CRAY CF90 - for Crays YMP and YMP-C90, Superserver 6400 and Sparc Solaris 2.3, plans for HP, SGI
DEC Fortran 90 V4.1 - for Digital UNIX Alpha and for OpenVMS Alpha, UNIX version including full HPF support and nearly full F95, Digital Parallel Software Environment (PSE), companion product on UNIX for HPF programming.
Digital Visual Fortran - for Windows NT and Windows 95.
EPC Fortran 90 - for Sparc Solaris 1.X and 2.X, IBM RS/6000, Intel 3/486 (SVR3&4, Solaris 2.x), SGI, Motorola 88000/100/100 (SVR3&4), MIPS, NT
Fujitsu - full compiler for Sparc Solaris 1.1 and 2.x next: Sun Sparc (MP) 3Q/95, HP PA-RISC 4Q/95 MIPS ABI 4Q/95, SGI 4Q/95, Windows 1Q/96
HP HP Fortran 90 - full compiler for HP-UX 10.20, 10.10, 10.01 and SPP-UX
IBM XLF - full compiler for RS/6000, with HPF extensions + KAP preprocessor - from KAI, for AIX V3.2 and V4.1
Imagine1 F - educational subset (dusty features removed, for inexpensive F90 learning) - free for Linux.
Lahey LF95 - Fortran 95 compiler under several packaging options.
Lahey LF90 - for DOS, Windows including Pentium optimizations and Interacter Kit.
Lahey ELF90 - educational subset (dusty features removed, for inexpensive F90 learning) - freely downloadable.
Microsoft Fortran Powerstation V4.0 - for Windows NT 3.5 and Windows 95. See Digital Visual Fortran, as Microsoft ``handed over'' Fortran to DEC in Spring 97.
MicroWay - for DOS, OS/2, Unix, Linux.
NA Software F95 FortranPlus - Full F95, native ISO_Varying_String, Fortran2000 extensions, OpenGL graphics compatibility, backwards compatibility extensions.
NA Software HPFPlus r2 -HPF for Linux PC PVM, Sun Sparc PVM or MPI, Meiko CS2 PVM or MPI, IBM SP2 (MPI).
NAG/ACE Optimizing f90 - release 1.0 for Sparc Solaris 2.
NAGWare f90 - uses C as intermediate language, now at rel:2.2, includes HPF extensions and exists in Linux version.
NAGWare f95.
NEC FORTRAN90/SX - for its supercomputer SX series.
Pacific Sierra VAST/f90 - uses F77 as intermediate language, for Unix, VMS and Convex.
Pacific Sierra HPF - PSR offers a free HPF compiler for Linux.
PGI - f90/HPF compiler, for SGI, IBM SP2, HP/Convex, Linux.
Salford FTN90 - PC implementation of NAG f90, direct generation of object code.
Salford FTN95 - full Fortran 95 compliant compiler for Extended DOS, Windows 3.1 and Win32 (NT and 95).
SGI - under IRIX 6.1 on R8000 machines: Power Challenge, Power Indigo 2, Power Onyx - Cray-compatible compiler (version 7.2 and later).
SPARCompiler Fortran 90 - Sun's Cray-compatible compiler.
Sun's HPF.
Stern C. S. CF90 - Cray-compatible for DEC OSF/1.
NOTE: Some vendors offer a number of F90 extensions, for instance array syntax or ALLOCATE instruction.

Code re-structurers and converters

Summary of the f95 parser project
F90 code to Laheys free ELF90 A converter provided by Alan Miller for Numerical Recipes
Pacific-Sierra VAST/77to90 (see article by JKP in Fortran Journal 5/4)
LOFT90, by NA Software (available also under Linux)
FORESYS 1.4, GUI based High Performance Global Analysis, F77->F90 conversion, and parallelization.
FORGE Explorer 2.0, Distributed and shared memory Parallelizer, Applied Parallel Research, Inc.
NAGWare f90 tools, pretty-printer, declarations standardiser, precision standardiser, names changer.
CONVERT, conversion to F90 free format, proposed by Mike Metcalf via anonymous ftp on jkr.cc.rl.ac.uk (130.246.8.23), file /pub/MandR/convert.f90.
FORTRAN-lint for F77 and F90.
ftof90.c, minimal F77 -> F90 conversion.
f90ppr, F90 pre-processor similar to cpp.
f90aib, Automatic interface bloc generator (beta version).
Sun's fpp, Fortran public domain pre-processor.
flecs90, FLECS to F90 translator.
HPF mapper, for PVM or Parmacs, on Sun clusters: NA software.

Libraries and utilities

*Emacs* package free-format f90-mode. Among the options one finds automatic matching and completion of all end-blocks (for example, indenting a line starting with end, finds the corresponding if/do/module... and checks/fills in the right kind of block and a possible name), it has an automatic fill-function which breaks a line and inserts &-signs (two if inside a string) when a line gets too long, different coloring for different features which is updated with every indent of a line. The most common commands are available via a menu.
Fortran-2000.com will host downloadable source code for Unconditional, Unique, and Partial Ranking, Sorting, and Permutation.
Some utilities (pre-processor/pretty-printer, automatic interface generation, f90split, PostScript listing of source).
OpenGL Fortran 90 bindings interface for OpenGL 1.1 (or Mesa), GLU 1.2, GLUT 3.6 and several OpenGL extensions, supports most Unix workstations and Windows 95/NT.
PSPLOT, a Fortran-callable PostScript plotting library which is platform independent, supports color, and produces publication quality graphics.
Performance Library - LAPACK, BLAS, FFTPACK, VFFTPACK et LINPACK optimized for SPARC (Sun Performance Workshop).
INTERACTER - graphics library for Lahey LF90 and Salford FTN90, on 386/486/pentium + DOS Extenders (Int. Soft. Serv.).
Lahey has F90 components (manual, array intrinsics, front end,...) that they would like to license to others.
f90doc is an easy-to-learn documentation tool that generates pages of HTML documentation from Fortran 90 source.
NAG fl90, numerical and statistical library, Sun 4, Sgi, DECstation, and IBM RISC System/6000.
NAG tool components (parser, semantic analyser, tree modification library and tree flattener).
f90SQL, a library of functions and subroutines that work as an interface between Fortran programs and Microsoft Windows Open Database Connectivity (ODBC) API.
Numerical recipes(Others give caveats !)
Cray LibSci(tm), numerical library for Crays and Sparc Solaris 2.3
MPFUN (Multiple Precision Floating Point Computation Package) by David W. Bailey, for Cray CF-90.
IMSL library (Visual Numerics) Fortran Math and Stat libraries are available from Absoft
Syntax verifier extracted from NAG compiler, put into public domain by NAG for Sun 3, Sun 4, Sgi.
Interactive checking of user's code over www at http://www.nag.co.uk/0/Forms/f90_interface.html
ISAM/VSAM/btree file structure, and Positional Key file structure ISF and PKF modules, shareware from Garnatz and Grovender, Inc
XLIB interface, from Garnatz and Grovender also.
CADNA, by professeur Vignes from Universite Pierre et Marie Curie, implements stochastic arithmetic in Fortran 90, and enables monitoring of precision loss and/or numerical instabilities during execution. (Control of Accuracy and Debugging for Numerical Aplications in Fortran) More information available from AERO (see also articles by J. Vignes), or Pr. Chesneaux (chesneaux@masi.ibp.fr).
ISO/IEC 1539-2 (Auxiliary standard) - Variable length character strings in Fortran (with a demonstration of implementation)
LAPACK, (minimaly) translated by myself, successfully passed all its tests with NAg-f90 2.0. I aggressively translated single precision Blas, and intend to do the same with other Blas as soon as I have time.
StopWatch, Measurement of execution times by W.F Mitchell
FFT module, by Michael Steffens
F90 makedepend, perl script by Kate Hedstrom
Automatic differentiation with Fortran programs

Tests and Benchmarks

Lahey Test suite - F77 & F90 (license agreement)
NAGware Test suite - tests for compilers (same as:
Unicomp Test suite - now available as F95 version, marketed by Quetzal Benchmark from John K. Prentice, also with additional CAPACITA benchmarks on http://www.polyhedron.com/.
Benchmark of Syracuse University, via anonymous ftp on minerva.npac.syr.edu, in /old_pub.
Channel benchmark by John D. McCalpin, via anonymous ftp on perelandra.cms.udel.edu, in bench/channel.

Examples and repositories

Nag has set up a repository for contributed code:

WWW: http://www.nag.co.uk/1/nagware/Examples

The Fortran Market has established itself on the World Wide Web. "ONE place to find all information, products, and services related to Fortran"

WWW: http://www.fortran.com/fortran/market.html

Lahey Computer Systems downloadable F90 public domain code.
11,000 lines offered by Richard Maine via anonymous ftp on

ftp.dfrf.nasa.govfile is fdas.tar.Z

Many of the example codes and problem solutions from NUMERICAL METHODS FOR DIFFERENTIAL EQUATIONS - A computational approach by John R. Dormand have been coded in F.
Alan Miller's home page contains code for converting Numerical Recipes F90 code to make it compatible with Laheys free ELF90 compiler and a variety of other F90 code (quadruple-precision COMPLEX arithmetic, TOMS 768, ...).
STEJOI, statistical package for joint occurrence events, on Sun, including source code and everything, via anonymous ftp on ftp.ifremer.fr the file is f90dvl.tar.Z
Module unsigned_32, for definition and use of unsigned 32 bits integers, also on ftp.ifremer.fr the file is unsi32.f90.Z
f90split, experimental version, similar to Unix BSD fsplit, but for free source form, also on ftp.ifremer.fr the file is f90split.f90.gz
Algorithm 999 by A.G. Buckley for unconstrained nonlinear minimization, on ftp.royalroads.ca

Courses and Consultancy

IT Independent Training Limited, UK
DRIME, France, janninst@drime.fr
CTS, Germany
Unicomp, USA Pacific-Sierra Research Corp., USA CETech, Inc., USA


A bibliography in French, gathered by Bernard Pichon.

Standards

ISO/IEC 1539:1997

International Standard

Information technology - Programming langages - Fortran Somewhat expensive (CHF 210 ~ US$ 140 !) for instance, at ISO. Surprisingly enough, the identical, save for foreword and acknowledgements, ANSI standard X3.198-1992 is even more expensive. Walter S. Brainerd, Unicomp., offers:

- for 125 US$, an electronic ascii monouser version,

- for 125 + 10n US$, an electronic PostScript version, and the right to make n paper copies,

- or for 1000 US$, an electronic ditroff monouser version.

A version with French glossary is available as European norm NF EN 21539.

Glossary

Fortran terminology glossary by Ken Hawick hawick@npac.sys.edu

Journals

Fortran Journal ISSN 1060-0221, Enquiries: Walt Brainerd walt@fortran.com Subscriptions: Fortran Users Group / P.O. Box 4201 / Fullerton, CA 92634 (From 1997, free access from the Fortran Market)
Fortran Forum edited by Loren Meissner meissner@usfca.edu Subscriptions: ACM membership services: acmhelp@acm.org 10$ members, 20$ non members

Tutorials and other documents

FORTRAN Performance Tuning co-Guide.
European Standards For Writing and Documenting Exchangeable Fortran 90 Code.
University of Liverpool on-line tutorial.
P. Corde and H. Delouis, ``Support de cours Fortran 90 IDRIS''. This is a very complete reference (224 pp.), in French, for which the authors have agreed to give free access.
Pr. Loren Meissner has written an ELF subset (Essential Lahey Fortran) textbook, from his PWS book, and offers it on a royalty basis of $1.00 per copy, with advance royalty payment for 100 copies (LPMeissner@msn.com).
Copyright but freely available course material is available from Manchester Computer Centre.
Bo Einarsson and Yurij Shokin have written a tutorial on the transition from Fortran 77 to Fortran 90, with the title "Fortran 90 for the Fortran 77 programmer"
Michel Goossens has now installed a Fortran 90 tutorial on the World Wide Web (WWW) under the URL : F90 Tutorial/Overview- http://wwwcn.cern.ch/asdoc/f90.html There is no copyright on this material.
There is a Fortran (90) tutorial on the net that might be of some use Tutorial from University of New Mexico
A discussion about the various aspects of OO Fortran 90 programming, with comparison to C++, can be found at OO Fortran 90
See also:
http://www.nsc.liu.se/~boein/fortran.html
http://www.kcl.ac.uk/kis/support/cc/fortran/f90home.html
DEC
ORNL
ftp://ftp.th-darmstadt.de/pub/thd/fortran/f90/
The University of Liverpool
Belfast
Univ of New Mexico
Syracuse Univ.
Pacific-Sierra Research mini-tutorial about converting Fortran 77 programs to High Performance Fortran
EPCC Writing Data parallel programs with High Performance Fortran
Leicester

Books

* in English,

Adams, Brainerd, Martin, Smith. Fortran Top 90 - Ninety Key Features of Fortran 90, Unicomp, Sept. 1994.
Adams, Brainerd, Martin, Smith, Wagener. Fortran 90 Handbook, McGraw-Hill, 1992. ISBN 0-07-000406-4
Adams, Brainerd, Martin, Smith, Wagener. Fortran 95 Handbook, MIT Press, 1997. ISBN 0-262-51096-0
Adams, Brainerd, Martin, Smith. Key Features of F, Unicomp, 1996. ISBN 0-9640135-2-5
Brainerd, W., Goldberg, and Adams. Programmer's guide to Fortran 90, 3rd edition, Unicomp, 1996. ISBN 0-07-000248-7
Brainerd, W., Goldberg, and Adams. Programmer's guide to F, Unicomp, 1996. ISBN 0-9640135-1-7
Brooks. Problem solving with Fortran 90: for scientists and engineers, Springer, 1997. ISBN 0-387-98229-9
Chamberland, Luc. Fortran 90 : A Reference Guide, Prentice Hall. ISBN 0-13-397332-8.
Chivers, I. and Sleightholme, J. Introducing Fortran 90, Springer-Verlag, Sept. 1995. ISBN 3-540-19940-3
Counihan, Pitman. Fortran 90, 1991. ISBN 0-273-03073-6
Einarsson, B., Shokins, Y. Fortran 90 for the Fortran 77 programmer HTML-book.
Ellis, T.M.R, Lahey, T. and Philips, I. Fortran 90 Programming, Addison Wesley, 1994, with examples ISBN 0-201-54446-6
Forsythe. Contemporary Computing for Technical Engineers and Scientists: using Fortran 90 and spreadsheets, PWS, 1997 ISBN 0-534-93139-1
Gehrke, W. Fortran 95 Language Guide Springer-Verlag, 1996, ISBN 3-540-76062-8, Softcover
Gehrke, W. The F Language Guide, Springer-Verlag, 1997, ISBN 3-540-76165-9, Softcover
Gehrke, W. Fortran 90 Language Guide Springer-Verlag, 1995, ISBN 3-540-19926-8, Softcover
Hahn, B.D., Arnold, E. Fortran 90 for Scientists and Engineers, 1994. ISBN 0-340-60034-9
Huddleston. Fortran 90, Exchange Publ. Div., Buffalo, NY, 1996, ISBN 0-945261-07-1
Kerrigan, J. Migrating to Fortran 90, O'Reilly and Associates, 1993 (2nd ed. Sept.94), with examples ISBN 1-56592-049-X
Charles H. Koelbel, David B. Loveman, Robert S. Schreiber, Guy L. Stelle Jr., Mary E. Zosel. High Performance Fortran Handbook, MIT Press, 349 pages, 1994. ISBN 0-262-61094-9 $24.95 in paper back ISBN 0-262-11185-3 $45 for hard cover
Mayo, W.E. and Cwiakala, M. Schaum's Outline of Theory and Praxis -- Programming in Fortran 90, Mc Graw Hill, 1996. ISBN 0-07-041156-5
Meissner, L. Fortran 90, PWS Kent, Boston, 1995. ISBN 0-534-93372-6
Meissner, L. Essential Fortran 90 and 95, Unicomp, 1997. ISBN 0-9640135-3-3 $40
Metcalf, M. and Reid, J. Fortran 90/95 Explained, Oxford University Press, 1996. ISBN 0-19-851888-9 (2nd edition, 1999, ISBN 0-19-850558-2)
Metcalf, M. and Reid, J. The F programming Language, Oxford University Press, 1996. ISBN 0-19-850026-2
Morgan and Schonfelder, Programming in Fortran 90, Alfred Waller Ltd., 1993. ISBN 1-872474-06-3
Nyhoff and Leestma, Fortran 90 for Engineers and Scientists, Prentice Hall, 1996. ISBN 0-13-519729-5
Nyhoff and Leestma, An introduction to Fortran 90 for Engineers and Scientists, Prentice Hall, 1996. ISBN 0-13-505215-7
Ortega, Saunders, Introduction to Fortran 90 for Scientific Computing, Saunders College Publishing, 1994 ISBN 0-030010198-0
Press, Teukolsky, Vetterling and Flannery, Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing, Volume 2 of Fortran Numerical Recipes, Cambridge U. Press, 1996. ISBN 0-521-57439-0
Redwine, C., Upgrading to Fortran 90, Springer, 1995 ISBN 0-387-97995-6
Schick W., Silverman Gordon, Fortran90 and engineering computations, John Wiley and sons, 1995 ISBN 0-471-58512-2
Smith, I.M. Programming in Fortran 90, Wiley, examples ISBN 0-471-94185-9
Thompson, Atlas for Computing Mathematical Functions ... in Fortran 90 and Mathematica, Wiley, 1997 ISBN 0-471-18171-4
Vowels, R., Introduction to Fortran 90/95, Algorithms and Structured Programming ISBN 0-9596384-8-2
Willé, D.R., Advanced Scientific Fortran, John Wiley and sons, 1995 ISBN 0-471-95383-0

* in French,

Aberti, C. Fortran 90: Initiation a partir du Fortran 77, S.I. éditions, 1992. ISBN 2-909615-00-6
Ain, M. Savez-vous parler Fortran, Bibliotheque des universites (de Boeck), 1994. ISBN 2-8041-1755-3
Delannoy, C. Programmer en Fortran 90, Eyrolles, 1992. ISBN 2-212-08723-3
Dubesset, M. et Vignes, J. Les spécificites du Fortran 90, éditions Technip, 1993. ISBN 2-7108-0652-5
Lignelet, P. Fortran 90: Approche par la Pratique, S.I. éditions, 1993. ISBN 2-909615-01-4
Lignelet, P. Manuel complet du langage Fortran 90 et Fortran 95, Calcul intensif et génie logiciel, Masson, 1996. ISBN 2-225-85229-4
Lignelet, P. Structures de Données (et leurs algorithmes) en Fortran 90 / 95, Masson, 1996. ISBN 2-225-85373-8
Metcalf, M. et Reid, J. (translated by M. Caillat and B. Pichon) Fortran 90: Les concepts fondamentaux, AFNOR Editions, 1993. ISBN 2-12-486513-7
Olagnon, M. Traitement de données numériques avec Fortran 90, Masson, 1996. ISBN 2-225-85259-6

* in Chinese,

He Xingui, Xu Zuyuan, Wu Gingbao and Chen Mingyuan Programming Language FORTRAN 90, China Railway Publishing House, Beijing, 1994. ISBN 7-113-01788-6/TP.187

* in Finnish,

Haataja, Rahola and Ruokolainen Fortran 90, Center for Scientific Computing (Finland), 1996. ISBN 952-9821-33-6

* in German,

Brainerd, W.S., Goldberg Ch.H., Adams J.C., translated by Peter Thomas and Klaus G. Paul Fortran 90, Lehr- und Arbeitsbuch fuer das erfolgreiche Programmieren, R. Olbenbourg Verlag, Muenchen, 1994, ISBN 3-486-22102-7
Gehrke, W. Die Programmiersprache F Springer-Verlag, geplant fuer Sept/Okt 1997.
Gehrke, W. Fortran 90 Referenz-Handbuch, Carl Hansen Verlag, 1991. ISBN 3-446-16321-2
Heisterkamp. Fortran 90: Eine Informelle Einfuehrung, BI-Wissenschaftsverlag, 1991. ISBN 3-411153-21-0
Langer, E. Programmieren in Fortran, Springer Verlag, 1993. ISBN 0-387-82446-4
Michel, T. Fortran 90 Lehr- und Handbuch, BI-Wissenschaftsverlag, 1994.
Schobert, Programmierung in Fortran 90, Oldenburg, 1991.
Ueberhuber, C., Meditz, P. Software-Entwicklung in Fortran 90, Springer Verlag, 1993. ISBN 3-211-82450-2
Wojcieszynski, B, Wojcieszynski, R. Fortran 90 Programmieren mit dem neuen Standard, Addison-Wesley, 1993. ISBN 3-89319-600-5

* in Dutch,

Brainerd, W.S., Goldberg Ch.H., Adams J.C., transl. by J.M. den Haan Fortran 90, Academic Service, 1991. ISBN 90-6233-722-8

* in Swedish,

Blom, K. Fortran90 - en introduktion, Studentlitteratur, Lund, 1994. ISN 91-44-47881-X
Einarsson, B., Shokins, Y. Fortran 90 for the Fortran 77 programmer HTML-book.

* in Russian,

Einarsson, B., Shokins, Y. Fortran 90 for the Fortran 77 programmer Printed book.
Metcalf, Reid (translated by P.Gorbounov) Fortran 90 Explained. Mir Publishers, Moscow, 1995. ISBN 5-03-001426-8 Russian customers: Mr. A.S.Popov, E-mail asp@mir.msk.su European residents: Petr.Gorbounov@cern.ch

* in Japanese

Metcalf, Reid (translated by H.Nisimura, H.Wada, K.Nishimura, M.Takata) Fortran 90 Explained, Kyoritsu Shuppan Co., Ltd., 1993 ISSN 0385-6984.