How to know quickly in which Fortran standard a feature appeared?

I’m curious what the use case is. I often encounter this issue from the perspective of wanting to know what a compiler supports (ie is it 2003 compliant, 2008 compliant, …) and when working with older code I want to know what the vintage of the code is to have a better idea of what is likely to need looked at (which compiler switches that enforce a standard are often useful for), but much less rarely am I looking at when a feature was introduced. Knowing what platform a code ran on is often very important, as some features have a complex history, having emerged from various compiler-specific extensions, but being subtly different in the standard than in some of the pre-standard variants and so on. Is there a use case for just knowing when something was introduced independent of such issues other than general curiosity?

Knowing really old code with something like “array=scalar” was only setting element one of the array, not the entire array (pre-standard 66 Fortran in most cases) and other such things can be critical to getting an old code running, and being really suspicious of arrays being dimensioned to a size of one that are procedure parameters and so on can be critical, but I am wondering if I am missing another aspect of knowing Fortran history.

More specifically, it is often the use of non-standard features that I need to know the history of,
as Fortran is nearly obsessively upward compatible if code was standard-conforming in the first place.

2 Likes

Updating my lecture notes I like to add Fnnnn footnotes to new items. Serves both as new stuff here reminder to me and a may be not supported yet warning to the readers. That is also why I miss such notes in books like MFE. When I re-read a new edition following another version of the Standard, I would grasp new features/interpretations easier if not having to read the whole text.

Ahhh, of course. I do do that almost reflexively. f2018 is a red flag to try it out carefully, and scanning over material I skip over anything marked pre-f95, especially f77. Good timing on the reminder. I was debating on whether it was valuable to have a “standard” section in the intrinsics descriptions I am compiling. They will stay in and I will spend some time matching them to some of the references here, as some are trickier like a function has been around since f77 but always returned a default intrinsic integer for years, but more recently has a kind parameter. Changes like that make it much harder to describe the pedigree of a procedure, and I was debating if it was even valuable. Thanks!