Ref card for Modern Fortran

I found a summary of Fortran 90 features in a reference card - 2 pages !
link
It’s so useful. Can we make something like this for Fortran 2003 and 2018 as well - may be 4-5 pages?
It will be excellent for new beginners to see how concise and powerful Fortran is ! Then they can go to each feature and learn from books - come back again and have more grip on the reference card - it will like a powerful programming language in a pocket !

8 Likes

The author proposes great refcards under CC-BY-NC-SA license:
https://michaelgoerz.net/refcards/

There is also the Tobias Burnus’ refcard (Fortran 2003):
http://users.physik.fu-berlin.de/~tburnus/gcc-trunk/FortranRef/

In each case, the “sources” are available.

Another one that disappeared from this link:
http://www.mie.uth.gr/ekp_yliko/fortran_quick_reference_cheat_crib_sheet.pdf
but can be found here:

Michael Goerz’ refcard is available here in a more recent version (2014), including some Fortran 2008 features:
https://michaelgoerz.net/refcards/fortran_refcard_a4.pdf

And the LaTeX sources are now on GitHub (last update in Dec. 2018):

@Ashok,

See this post by @vmagnin - good apps on mobile devices can be more handy now and in the future than ref cards. As is in a web browser, a program author is often one or two search result clicks away from getting answers to her queries.

1 Like

We can post also the link here. I posted in the anecdotal Fortran section because I did not know where to post it! But now it has a place:

Note that there is a two minutes video that demonstrates the app.
Needs Android >= 4.4.

Strangely, there is another Android App called Fortran Programming (Play Store) which, apart from slightly diffferent GUI, seems to have the very same content.

It seems to be a kind of fork less pretty but with a smaller size (3.3 MB instead of 7.6 MB).

I prefer to use the original, whose authors are more clearly identified: https://www.softecks.in/
In the FAQ of the app, they say that the content can be used in Schools and Companies for internal purpose, if you keep appropriate reference to Softecks Apps. And they say they write the content.

The second app is edited by a Galaxy Production organization. I don’t know their relations with Softecks.

This refcard starts with somewhat strange statement:

It’s not completely accurate but one can make some supporting arguments toward that point if one were so inclined.

Note FORTRAN 77 (say as per ANSI X3.9-1978 document) explicitly listed only the 26 letters - A thru’ Z - as being allowed to be part of the syntactic items. The language was then de facto case sensitive in many ways, or more like it supported working with uppercase letters in code only barring instances involving character literals (usually with Hollerith) where lowercase might appear.

2 Likes

As @FortranFan noted, it’s not that FORTRAN 77 was case sensitive or insensitive, it just only allowed capital letters for identifiers. So it was “case sensitive” in that it only supported upper case. The statement isn’t “wrong”, but it is misleading.

Well, for me (and probably for a few other people) “case sensitive” means that “GOTO” != “GoTo” != “goto”. If “goto” is not allowed at all, that’s something very different. And the statement is even more misleading taking into account that all (or maybe just 99%) F77 compilers did allow lowercase in a “case insensitive” sense.

I feel like fortran-lang.org should have a modern Fortran refcard/cheat sheet for downloading.

5 Likes

Are there any ref cards that cover do concurrent and coarray?

Since someone posted the ABSOFT shutdown announcement yesterday, I might mention that at one time the ABSOFT fortran compiler was by default case sensitive. Like C and other case sensitive languages, the variable X was distinct from the variable x. I think fortran keywords were case insensitive, GOTO was the same as GoTo, but I have forgotten those details now. There was a compiler switch to make the source code case insensitive, as required by the f90 standard, and that is what I always used, so I never really had any experience with the case sensitive mode. I think it did allow external symbols to be mixed case, so that part allowed more options with C and OS function calls, especially before c-interop was included in f2003. Later versions of that compiler switched the default, but it was still possible with an option to revert to the old case-sensitive behavior.

It was always a matter of contention whether f77 allowed lower case letters or if it was an extension of the language to do so. My reading of the standard was that the case-sensitive version (ala ABSOFT) was indeed an extension of the language, but that the case insensitive version which most compilers supported (and eventually became part of f90) was not. It was rather part of the language that was explicitly excluded from specification, namely the underlying bit representations of the characters and how those characters appear on devices outside of the fortran processor. The argument to support this was that if you started with a “standard conforming” upper case code, and printed it on a printer that folded letters to lower case, then that did not suddenly make the code nonstandard. So the upper case characters defined in the f77 standard applied solely to the fortran standard document itself, it did not extend also to the bit representations on a computer, on the printer attached to that computer, or to the text editors or cards that were used to store and modify the fortran source. The part of the f77 standard that supports that argument is:

1.3.2 Exclusions. This standard does not specify:
(1) The mechanism by which programs are transformed for use on a data processing system
(2) The method of transcription of programs or their input or output data to or from a data processing medium

1 Like

I don’t want the language to change, but I would compile with this option if available, so that with implicit none in the code, each variable would have to be capitalized in the same way it was declared.

1 Like

That consistency would help with the esthetic style. A compiler warning might be sufficient, but I would want it to be independent of any implicit statement in effect.

1 Like