MOPAC 7 のページへ戻る

g77 と MOPAC 7

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 の名前を細工するのは、プリプロセッサを通すためです。

MOPAC 7 のページへ戻る

Copyright © 2001-2003 Media Lab. All Rights Reserved.