History of Fortran (Fortran II source code)

I noticed the following resources today:

http://www.softwarepreservation.org/projects/FORTRAN/

https://news.ycombinator.com/item?id=23497895

Among other things, they have the FORTRAN II compiler sources and they claim they got it working in a simulator, as well as the programs that the compiler generates.

I don’t have time to do it myself, but would somebody be interested in trying to get the FORTRAN II compiler working and posting step by step instructions?

Also I would be interested in having a page at fortran-lang.org about Fortran’s history, with the focus on the language changes with code examples. We can do that from FORTRAN 66 onward relatively easily using the published standards, see e.g. here:

https://www.fortran90.org/

But I would like to extend this all the way to FORTRAN I if possible. Based on https://en.wikipedia.org/wiki/Fortran#History, it seems there was simply

  • FORTRAN I (1957)
  • FORTRAN II (1958)
  • FORTRAN III (1958, but never released as a product)
  • FORTRAN IV (1962)

The FORTRAN IV was essentially equivalent to FORTRAN 66, of which the standard is available (see the link above).

The Wikipedia page is a good start, but I would prefer to have more code examples for each Fortran version, I think it conveys much better what the language allowed and how it looked like.

The basic elements of Fortran didn’t really change from FORTRAN I, and so having this page at fortran-lang.org would allow to drive the point home of what problem Fortran is trying to solve and that the original mission still applies today.

2 Likes

It would be really cool to get the original compiler working again. Is it necessary to build a simulator of the original hardware this program ran on? What is with the assembly language, has this also changed since the 50s?

An interesting project I found once on GitHub is fif: Fortran in Fortran; it’s a Fortran I transcompiler written in Fortran 2018.

1 Like

Yes, they say the simulator for the original hardware is needed. The assembly language is always depending on the hardware it runs on.

The earlier versions (before FORTRAN 66) were originated at IBM. Most people these days would not recognize the assembly code. Note that Univac did carry on the Roman Numeral scheme with their FORTRAN V. The change from FORTRAN -> Fortran came with Fortran 90, so the archeological versions will have Fortran typeset with all uppercase letters. ( A bit embarrassing that the spell checker for this web site still thinks that “Fortran” is a spelling error. I thought that was limited to Microsoft, for which the phrase “meets expectations” comes to mind.)

1 Like

@longb Thanks. Yes, the FORTRAN versions I to IV were released by IBM. They are still part of Fortran history, aren’t they? It’s only a span of 5 years between FORTRAN I and FORTRAN IV, so things were moving quickly.

Regarding the spell checker, it works for me:

Screenshot_2020-06-14 History of Fortran (Fortran II source code)

As you can see, neither FORTRAN nor Fortran is a spelling error, unlike the other words in the image.

Perhaps it’s a spell checker in your browser?

Yes, FORTRAN 1…IV are definitely part of Fortran history. After all, IBM “invented” FORTRAN in the 1950’s. Things cam move quickly when only one company is involved, the starting base language is small, and relatively few people are involved. The observation about IBM being the main focus of FORTRAN in the early days was mainly for those who contemplated running old programs (good luck finding hardware) or reading the assembly language.

1 Like

Hi,

I’ve found this: http://www.quadibloc.com/comp/fortint.htm, with some code examples (FORTRAN I, II …)

1 Like

I am quite confused about the early history of the standardization of FORTRAN. The English Wikipedia page says about ANSI X 3.9 1966 Fortran 66 (published on the 7th March 1966):

FORTRAN 66 effectively became the first industry-standard version of FORTRAN.
ANSI X 3.9 1966 Fortran 66 : American National Standards Institute : Free Download, Borrow, and Streaming : Internet Archive

But it does not speak about the ECMA-9 Fortran standard, published in April 1965:

ECMA is the European Computer Manufacturers Association.
I am also confused about that paragraph in the introduction:

The ECMA FORTRAN has been adopted by the International Organization for Standardization (ISO) as intermediate level (referred to as Intermediate FORTRAN) between “FORTRAN” and “Basic FORTRAN” as will be described in the ISO Recommendation on FORTRAN. The ECMA FORTRAN is a subset of the full ISO FORTRAN.

I thought Fortran became an ISO standard only with Fortran 90. So what is that ISO FORTRAN they are talking about?

I have found two interesting documents about the early standards:
https://fortran.bcs.org/~fortrandev/1972/fortran_in_washington_1972.pdf

In July 1972 ISO published a recommended standard for
FORTRAN under the document number R1539. This has three levels
of the language, corresponding closely with American Standard
FORTRAN, ECMA FORTRAN, and American Basic Standard FORTRAN.

That second document gives more details about the history of Fortran standardization:

My understanding is that the ECMA Fortran was the first Fortran standard in 1965, but it was a subset of the future Fortran 66, which was itself (like Fortran 77) a double standard with the full FORTRAN standard and a Basic Fortran standard. ECMA was somewhere between those full and basic standards.

In 1972, the ISO published an ISO Recommendation for Fortran (R1539), including these three levels of the language. I have found no clear definition of what is an ISO Recommendation, but my understanding is that it is not a true standard but may become one later (?). It is all the more surprising that it was not until Fortran 90 that it became an ISO standard.

2 Likes

I’m afraid that getting the compiler working on an IBM 704 simulator will still leave a lot more to be done before the program can be run. The output from the compiler would be SAP assembler code (example of SAP code for a short Fortran program that inverts a 5 X 5 Hilbert matrix ). That assembler code would need to be run through the assembler and linked with the Fortran II library to obtain the equivalent of an EXE/a.out. Add to that the IBM 704 OS, simulated peripherals such as card reader, line printer, channels, etc.!

With a modern Fortran compiler one should have little trouble running Fortran II programs on a PC or MAC, except for a few features such as sense lights and sense switches that may not be included in the simulator.

1 Like

FWIW, I have this FORTRAN II program in my files. I added only line 2. This is the program referred to on p. 495 of MFE.

Mike

[Edit: see next post]

1 Like

Whoops, formatting is lost, try again:

C        SOLUTION OF QUADRATIC EQUATION                                         
C        (P. 122 OF A FORTRAN PRIMER BY E. ORGANICK)                            
    1 READ INPUT TAPE 5, 51, ANAME, N                                           
   51 FORMAT(A6,I2)                                                             
      WRITE OUTPUT TAPE 6,52, ANAME                                             
   52 FORMAT(1H1,33HROOTS OF QUADRATIC EQUATIONS FROM A6)                       
      DO 21 I = 1, N                                                            
      READ INPUT TAPE 5, 53, A, B, C                                            
   53 FORMAT(3F10.2)                                                            
      WRITE OUTPUT TAPE 6,54, I, A, B, C                                        
   54 FORMAT(1H0,8HSET NO. I2/5H A = F8.2,12X,4HB = F8.2,12X,4HC = F8.2)        
      IF(A) 10, 7, 10                                                           
    7 RLIN = -C/B                                                               
      WRITE OUTPUT TAPE 6, 55, RLIN                                             
   55 FORMAT(7H LINEAR,25X,4HX = F10.3)                                         
      GO TO 21                                                                  
   10 D = B**2 - 4.*A*C                                                         
      IF(D) 12, 17, 17                                                          
   12 COMPR = -B/(2.*A)                                                         
      COMP1 = SQRTF(-D)/(2.*A)                                                  
      COMP2= -COMP1                                                             
      WRITE OUTPUT TAPE 6, 56, COMPR, COMP1, COMPR, COMP2                       
   56 FORMAT(8H COMPLEX,21X,7HR(X1)= F10.3,11X,7HI(X1)= F10.3,/1H ,28X,         
     17HR(X2)= F10.3,11X,7HI(X2)= F10.3)                                        
   16 GO TO 21                                                                  
   17 REAL1 = (-B + SQRTF(D))/(2.*A)                                            
      REAL2 = (-B - SQRTF(D))/(2.*A)                                            
   20 WRITE OUTPUT TAPE 6, 57, REAL1, REAL2                                     
   57 FORMAT(6H REAL 25X,5HX1 = F10.3,13X,5HX2 = F10.3)                         
   21 CONTINUE                                                                  
      WRITE OUTPUT TAPE 6, 58, ANAME                                            
   58 FORMAT(8H0END OF A6)                                                      
      GO TO 1                                                                   
      END                                                                       

1 Like

Fortran history enthusiasts can buy used books from the early 1960s on Amazon. There is
A Fortran Primer (1963) by Elliott I. Organick for $20 and Guide to Fortran Programming (1961) by Daniel D. McCracken for $6. Organick and McCracken continued to write Fortran books though 1980 and 1988 (books on Fortran 77), and one could trace the evolution of Fortran through their work. Organick’s 1980 book was co-authored by Loren Meissner, whose Fortran 90 and Essential Fortran 90 & 95 helped me transition from Fortran 77. Some historical information on Fortran from Meissner is here.

2 Likes

Another good text that covers late 60s (Fortran IV) versions of Fortran is
Fortran Programming by Fredric Stuart (Wiley and Sons, 1970). This book
has tables showing the various language features supported by 78 compilers
on 152 computer systems. It was my first Fortran book and I still use it from
time to time when I run into some old Fortran extensions in NASA reports etc.
from that era that have complete code listings. SENSE SWITCH is my favorite :slight_smile:

2 Likes

I have also found a list of FORTRAN compilers from 1957 to 1967:
https://fortran.bcs.org/2007/jubilee/implementations.php

In 1960, it was already a cross-platform language as there were two or three FORTRAN implementations on non-IBM machines. Although Backus’ team did not conceive the language thinking about it, they were just working for IBM machines (initially the IBM704, but the compiler was quickly adapted to other IBM machines).

Maybe FORTRAN is the first cross-platform language, or is it COBOL or ALGOL 60?

COBOL’s and ALGOL60’s specifications both appeared near the end of 1960 and it took a few months for implementations to appear. I suspect APT (Automatically Programmed Tool, which appeared shortly after Fortran I) had a number of platforms by 1960. LISP may have had a couple. There were a couple of implementations of ALGOL58 by 1960, but because of the ambiguities in the language’s syntax (fixed for ALGOL60 by the invention of Backus Normal Form), they were non-portable.

1 Like

I read that fantastic paragraph about the state of FORTRAN around 1958 (it sounds like the Fortran-lang community in 2021, isn’t it?):

Nonetheless, the technical basis of FORTRAN was sufficiently sound that usage
was like a snowball going downhill.
Soon there were hundreds of customers making hundreds of
suggestions for improvements. They would find bugs and send
them in – not only error reports, but in many cases the fixes would
come in along with the reports. Many suggestions applied to such
matters as improvement of diagnostics – little practical things –
and it was as if there were hundreds of people working on im-
proving FORTRAN. The suggestions just poured in, and we put
them in as fast as we could.

“The Emergence of FORTRAN IV from FORTRAN II”: William P Heising
Annals of the History of Computing, Vol 1, No 1, Jan 1984

1 Like