fortran66のブログ

fortran について書きます。

FORTRAN66 での動的書式制御

夏休み読書メモ 菅忠義『電子計算機基礎講座3 標準言語FORTRAN共立出版(1972)

FORTRAN66 の JIS 規格制定の主査であった菅忠義氏による JIS FORTRAN の解説。

JIS FORTRAN 3000 水準は、略 IBM FORTRAN II から固有ハードウェア依存部分を除いたものに相当。
JIS FORTRAN 5000 水準は、ヨーロッパ ECMA 原案の規格に相当。
JIS FORTRAN 7000 水準は、IBM FORTRAN IV, ASA FORTRAN66 相当。

それぞれ ISO FORTRAN の Basic FORTRAN, Intermediate FORTRAN, Full FORTRAN に対応。

  1. 二次元までの配列を含む、普通の科学計算上の数値的問題のアルゴリズムの表現。
  2. 上記アルゴリズムの表現上必要な FORTRAN II の本質的部分だけを取り出し、FORTRAN IV の枠の中で規定したもの。
  1. 普通の科学計算上の数値的問題のアルゴリズムの表現。
  2. 上記アルゴリズムに、よく表れる論理的操作、および普通の論理演算の表現。
  1. 複素数を含む、普通の科学計算上の数値的問題、および論理的問題のアルゴリズムの表現。
  2. 高精度の数値計算を必要に応じて行うこと。
  3. 文字型データの取り扱いを可能にすること。
  4. 動的書式制御を可能にすること。
動的書式制御

ここで、注目したいのは『動的書式制御を可能にすること。』の部分です。
FORTRAN77 以降では、文字変数に FORMAT の書式を入れることで、文字列操作を通じてプログラム実行時に書式を動的に変えて入出力するテクニックが知られていますが、文字型変数を持たないFORTRAN66 の時点で動的書式制御がはっきり明示的に導入されていたことを知りました。

動的書式制御は、未だに普通の入門書や文法書にもはっきりと書かれていることが少なく、他人のソースや口伝で習うことが多いものです。これが FORTRAN66 の時点で規格の解説に堂々と書かれていたことが驚きでした。

具体例は第8章§8.2.3にいくつか与えられています。
p.176

      DIMENSION A(4)
      READ(5, 20) (A(I), I = 1, 4)
   20 FORMAT(4A6)
      READ(5, A) DOUBLE, SINGL 1, SINGL 2, PATRN

ここで文字列は実数型配列に収めています。


この他に、FORMAT 文中の書式を直接書き換えることもできるようです。
p.160

     READ(5,100)
 100 FORMAT(14H              )

これに、以下の入力を与えると、

  SEP.27,1967 

行番号 100 の FORMAT 文が書き換わって

 100 FORMAT(14H  SEP.27,1967 )

相当になるようです。

実行例

ソース・プログラム
    program format
      implicit none
      read 100
100   format('                                              ')
      print 100
    end program format
実行結果
The rain in Spain stays mainly in the plain.
The rain in Spain stays mainly in the plain.
続行するには何かキーを押してください . . .

F2008 規約完全準拠!

2017.5.9 追記
実際は FORTRAN77 規格で削除された機能のようです。付記事項のようなの所に書いてあるとかないとか?