FORTRAN Transcompiler

In 1957, IBM released the first FORTRAN compiler for the IBM 704 computer. The early language had very limited features: simple I/O, arithmetic IF conditionals, DO loops, and GOTO statements. The only supported variable types were integer, real, and arrays.

Since FORTRAN I is more than 60 years old, no compiler for modern platforms exists. Fortunately, a source-to-source compiler has been written in Fortran 2008 that translates FORTRAN code to ANSI C. The C code can then be used to build native binaries.

Build the Compiler

At first, download the source code of the compiler from GitHub:

$ git clone https://github.com/interkosmos/fif.git

Just execute BSD make to build the transcompiler:

$ make

Then, compile your FORTRAN code by running:

$ ./compiler <input> <output>

Compile FORTRAN code

Let us take a simple example written in FORTRAN I and compile it with the transcompiler. The programme just calculates the average of entered values:

C     AVERAGE.F
C     PROGRAM FOR CALCULATING THE AVERAGE VALUE
C    X    OF A SET OF NUMBERS
      DIMENSION A(999)
    1 FORMAT (I3/(F6.3))
      READ 1 N, (A(J), J = 1, N)
      SUM = 0.0
      DO 6 I = 1, N
      IF (A(I)) 5, 2, 2
    2 SUM = SUM + A(I)
    3 FORMAT (F6.3)
      PRINT 3 A(I)
      CONTINUE
    4 FORMAT (21HNEGATIVE NUMBER FOUND)
    5 PRINT 4
    6 CONTINUE
    7 FORMAT (9HAVERAGE: F6.3)
      PRINT 7 SUM / N

Save the source code as average.f. Compile and run the programme with:

$ ./compiler average.f average
$ ./average

At first, the user has to input the number of values to average, and hit return. Then, the floating-point numbers do follow one by one, separated by space. Here, the average of five numbers has been calculated:

$ ./average
5
21.4 43.3 12.9 6.4 41.2
 21.400
 43.300
 12.900
  6.400
 41.200
AVERAGE:  25.040

Please see the Programmer’s Reference Manual for more examples.

References