fortran66のブログ

fortran について書きます。

古い FORTRAN 本を読んでのメモ帳

最近、昔の FORTRAN 本をいくつか眺めていて気付いた事を書きます。

memo

整合配列

整合配列は FORTRAN66 規格に入っていた。

ENTRY, alternate RETURN

これらは FORTRAN66 規格には入っておらず、FORTRAN77 規格に入っているが、FORTRAN66 以前に各ベンダーの独自拡張の中にすでに存在していて CDC6000 や IBM7090, IBM360 H level のような高級機のコンパイラは対応している。alternate RETURN は multiple RETURN 等の名前で呼ばれていた。

NAMELIST

NAMELIST も、FORTRAN66 規格には入っておらず、FORTRAN77 規格で導入されたが、これも FORTRAN66 以前の IBM, GE, SDS 等の独自拡張の中に存在していた。

引用符による文字列

ASCII や EBCDIC のような文字コード規格が成ったのは 1960 年代前半だが、このころすでにホレリス型の表現以外に、現代風の引用符でくくった文字列表現がベンダー拡張の中に存在していた。

補足

ENTRY と alternate RETURN

一般的な文法解説書では ENTRY 文と alternate RETURN 文は、対称な命令として節を続けて記述されることが多かった。昔の私には副プログラムをまたいだ GO TO のように見えて使い方や存在意義がよく分からなかった。しかし、今になって振り返ってみると、これらは全く別の概念から生み出されたもので、見かけほど対称ではない。

ENTRY 文は MODULE の祖型であって、複数の副プログラム間で定数などを共有する時きわめて有効である。

alternate RETURN は、try..catch のような例外処理構文の祖型で、副プログラム内で例外的な事象が生じた時、呼び出し位置とは異なる例外処理部分に戻ることを可能にしている。

これらの使い方をよく理解していないと、存在意義が分からない。

NAMELIST

入力データの順序を自由にしたいとき、変数名と値のセットを入力として読み込んで解釈してやる必要があるが、文字型変数すらない FORTRAN66 以前の処理系には多事多難である。しかし、1960年代前半にすでに処理系そのものに、最低限の変数への代入を解釈する仕組みが組み込まれていた。