Cserny さんの配布パッケージ MOPAC 7 for Linux では f2c でコンパイルするようになっていますが、 g77 ではコンパイル・エラーになったり、なんとかコンパイルしても 実行時に異常終了したりします。
この原因は、MOPAC 7 のソースが Fortran77 に違反している個所が あるからです。
1) matou1.f の 5 行目
PARAMETER (MAXDIM=MAX(MAXORB,3*NUMATM))
は g77 ではエラーになります。 PARAMETER 文では constant expression のみ許されます。
2) sympro.f の 173 行目
210 FORMAT(X,A10,I7,8I7)
の X は 1X と書く必要があります。176 行目も同じです。
3) (警告レベルですが)多くのソースの FORMAT 文で書式指定を区切る ',' が抜けています。
4) ef.f の 197 行目は 72 カラムを越えています。
実行時に異常終了するのは、多くのソースで
「COMMON ブロックに置いた変数、配列は副プログラムの実行を越えて保存される」
と期待しているからです。
保存の必要があるなら SAVE 文で指定しなければなりませんが、いくつかの
ソースで SAVE 文が抜けています。
これを全部修正するのは大変なので、
g77 のコンパイルオプション -fno-automatic
でしのぎます。
同じ名前の付いた COMMON ブロックはプログラム全体で大きさが同じでなければ いけないのですが、違反しているブロックがあります。 これは g77 では警告レベルなので無視することにします。
最後に、 g77 でコンパイルするためには fdate.c の 19 行目
#include "f2c.h"
を
#include "g2c.h"
とします。
以上を修正するためのパッチが
mopac-7.01-4.patch.gz
です。
使い方は、mopac-7.01-4 のソースディレクトリで
$ patch -p1 < mopac-7.01-4.patch $ mv matou1.f matou1.F $ make
matou1.f の名前を細工するのは、プリプロセッサを通すためです。