2021年5月29日土曜日

assumed-size array foobar(3,*)を「大きさ引き継ぎ配列」とするのはひどい誤訳ではないのかな?

f90の形状引き継ぎfoobar(:,:)はとてもよいが、モジュールに入れたサブルーチンをuseしないと引き継ぎが保証されないようだ。呼び出し側と呼び出される側を同じファイルに入れてもコンパイラは形状一致をチェックするので、いささかの混乱がある。

どうしてもf77のライブラリを利用することになるがトップダウンでf90化していく必要はある。subroutineの引数でデータを渡すのは避けるべき。指示(入力のみ)を書くべき。module変数のprotectで出力する。use,olnyとprotectの併用でデータフローのしっかり読めるコードになる。f77コードをトップダウンで(上位レベルから)モジュール化していくのがよい。依存関係やI/Oが明瞭になる。

ある種の単純化された「数値計算向けオブジェクト指向」というものがある。

f77ルーチンにsize(foobar)でサイズを取りたいが、このときfoobar(:)でいかないといけない。ただし、(:)だとシェープチェックも入ってくるので次元合わせまで要求されてしまう。