とりあえず二つほどよさげなコードを見繕って,ベンチマーク解析とかしようとしたんです.
んで入手したんですが,その両者ともに,
"MS-DOSでの使用を前提"
"MS Fortran PowerStationで組んである"
ことが発覚.
fl32とかないし使ったことも無いって話ですよ.
ちょっと調べてみたらあんまり評判よくないみたいだし.
でも仕方ないのでとりあえずLinuxに持ってきてインテルコンパイラでコンパイルしようとしたら,
ものっそいエラー出てきてコンパイルできないんですよ.
ソース見たら結構ぐちゃぐちゃ.
Fは最初っから90で来た若造にとっては
COMMONとかGO TOとかが入り乱れるソースは嫌気が指しますよね...
つってもしょうがないので地道に記述を直してコンパイル.
できたー
さっそくサンプルインプットを流してみた.
エラー.
コンパイラエラーではなく,
プログラムエラー.
ぶちギレですよ.
これに悪戦苦闘.
結論から言うと,コンパイルオプションをつけてやることで解決できました.
つけたのはsaveとzero.
古いコードだと,前述のようにCOMMONやら何やらが入り乱れてる場合が多く
そういうスパゲッティコードだと,あるSUBROUTINEからあるSUBROUTINEに受け渡すはずの変数が
受け渡される前にメモリ上で新しい値が上書きされて消し飛んで,あらぬ値が入ってあぼーん
ってことがままあるらしく.
若造故の無知だったわけですが.
ってことでsaveオプションつけて静的メモリを確保してやることと
念のためにzeroオプションつけて未代入の変数の値を0にしてやることで
大概は解決できるそうです.はい.
Fortranは過去の遺産が多いとは言うけども
一概に良いとは言えないなーと痛感しました.