Affiliate disclosure
Book titles on this page link to Amazon. As an Amazon Associate, DataField.Dev earns from qualifying purchases — at no additional cost to you.
Further Reading: FORTRAN 77 → Modern Fortran
This chapter is a lookup table; the resources below are where to turn when a real legacy file hands you a construct the table summarizes only briefly, or when you want the standard's own account of why a feature was retired. Everything here is a verified, first- or second-tier source.
The canonical books
- Metcalf, Reid & Cohen, Modern Fortran Explained (Oxford University Press). The definitive reference, and uniquely valuable for this chapter: it carries the language's history in its bones and its appendices enumerate the obsolescent and deleted features feature by feature — essentially this dictionary, written by the people closest to the standard. When you need the precise status of a construct, start here.
- Stephen Chapman, Fortran for Scientists and Engineers (McGraw-Hill). Teaches modern Fortran while
explicitly flagging each legacy construct as it is superseded, with "good programming practice" boxes that
read like translation advice. Its treatment of why
COMMON,EQUIVALENCE, andGOTOwere replaced is the gentle, thorough companion to §§19.1–19.2. - Milan Curcic, Modern Fortran: Building Efficient Parallel Applications (Manning). The modern-first
perspective: it shows what good 2018-era code looks like, which is the target every translation in this
chapter aims at. Especially good on modules and derived types — the destinations of the
COMMONmove.
Primary sources — the standard itself
- ISO/IEC 1539-1 (the Fortran standard). The normative account of what is obsolescent and what has been deleted, collected in the standard's annex on those features. This is the authority behind §19.5's "Status" column; when a claim in this chapter is load-bearing for a real migration, verify it against the exact clause rather than a secondary summary.
- The GNU gfortran manual (the GCC documentation). Documents the
-std=dialect flags precisely:-std=legacyto accept old fixed-form code and deleted features,-std=f2018to hold the modern result to the current standard, and the diagnostics each emits. The practical bridge between "read the old file" and "compile the new one."
Free and online
- fortran-lang.org — the "Learn" resources and Quickstart tutorial. The actively maintained community starting point for modern Fortran idioms, including modules, derived types, and the array features that replace the legacy constructs here. The best free reference for the modern side of every table.
- The Fortran Wiki (fortranwiki.org). Short, community-edited articles on individual constructs —
EQUIVALENCE,COMMON, statement functions,transfer— useful for a quick second opinion. Cross-check any surprising claim against the standard or Metcalf/Reid/Cohen.
Tools — automating the mechanical part
findentandfprettify. Open-source formatters that do the mechanical half of §19.4 for you: converting fixed-form to free-form, reflowing continuations to trailing&, and normalizing indentation. They handle the tedium of the columns; you still make the judgment calls (COMMON→ module vs. arguments, whichEQUIVALENCEjob is which) that no tool can make. Run the formatter first, then translate by hand.- Compiler Explorer (godbolt.org), with gfortran. Paste a legacy fragment and its modern translation side
by side and compare the generated assembly — concrete evidence that the structured,
pure, assumed-shape version is not slower (and is often faster) than theGOTO-and-COMMONoriginal.
Suggested order
- Read fortran-lang.org's module and derived-type pages, so the targets of the big translations are fresh, then keep this chapter's §19.5 table (or Appendix E) beside you.
- When you meet a construct whose modern status you are unsure of, look it up in Metcalf, Reid & Cohen; confirm anything critical against the standard's obsolescent/deleted annex.
- Before touching a real file, set up
findent/fprettifyfor the form conversion and-std=legacyvs-std=f2018so you can compile both the old and the new — the regression check that keeps your translation honest (Chapter 18).