fortran66のブログ

fortran について書きます。

1956年 IBM704 用 FORTRAN I の例題。

Fortran automatic coding system for the IBM 704 programmers reference manual
(1956) [http://www.fh-jena.de/~kleine/history/history.html:title=Historic Documents in Computer Science
collected by Karl Kleine] から。

Fortran automatic coding system for the IBM 704 programmers reference manual の第八章四十六頁に載っていた例題をば。

ソースプログラム

C     PROGRAM FOR FINDING THE LARGEST VALUE
C    X  ATTAINED BY A SET OF NUMBERS
      DIMENSION A(999)
C      FREQUENCY 30(2,1,10), 5(100)
      READ 1, N, (A(I), I = 1, N)
    1 FORMAT (I3/(12F6.2))
      BIGA = A(1)
    5 DO 20 I = 2, N
   30 IF (BIGA - A(I)) 10, 20, 20
   10 BIGA = A(I)
   20 CONTINUE
      PRINT 2, N, BIGA
    2 FORMAT (22H1 THE LARGEST OF THESE I3, 12H NUMBERS IS F7.2)
      STOP 77777

      END 

ここで、プログラム終端に END 文を加えることが必要です。FORTRAN I の時点では副プログラムが存在しなかったので、END 文は必要なかったようです。JOB カードのコマンドが来た時点でプログラムの終了になったのでしょう。また4行目の FREQUENCY 命令は、今でいうコンパイラ指示行のようなもので、すでに廃止になった命令なのでコメントにしておきました。それ以外はそのままで動きます。

実行結果

このプログラムは、データ個数と数値データを標準入力から読み込んで、その中の最大値を出力します。数値データのフォーマットは、行あたり F6.2 を 12個となっています。

今の Intel Visual Fortran では、ラインプリンタ制御文字(行送り)の改ページの扱いが無出力になってるようで、うまく働かないので、そのまま出力しておきます。
(追記2010-9-13:他の機械で試したらそれなりに動いていたので謎)

コンパイラ・オプションでの行送りの解釈の指定方法。