next up previous contents
Next: CとFORTRANの混在したプログラムのリンク Up: CとFORTRANの混在 Previous: FORTRANプログラムの中からCの関数を呼ぶ

FORTRANコモンブロックをCから使う

大規模なFORTRANプログラムではコモンブロックを頻繁に使います。FORTRAN のコモンブロックは言語特有の実装ですがCのプログラムから参照することは 可能です。まずCから参照するときのコモンブロックの名前ですが、関数名と 同じルールが適用されます。例えば

        * FORTRANプログラムの宣言文

                common /testcb/ k, f

                integer k

                doubleprecision f

この場合コモンブロックは_testcb_という名前が付きます。名前なしコモンの 場合は__BL NK__となります。ではコモンブロックのデータを参照するにはど うしたらよいのでしょうか。Cから見るとコモンブロックは一種の構造体に見 えます。ですからCのプログラムからこのコモンブロックを参照するには次の ような宣言が必要です。

        /* Cプログラムの中 */

        extern struct   {

                int     k;

                double  f;

                }       testcb_;

        ...

        testcb_.k = 10;         /* コモンブロックの要素kに値を代入 */

もちろん構造体testcb_のメンバーとFORTRANのコモンブロック/testcb/の要素 の並びは一致していなければなりません。メンバーの名前はどうでもよいので すが。



next up previous contents
Next: CとFORTRANの混在したプログラムのリンク Up: CとFORTRANの混在 Previous: FORTRANプログラムの中からCの関数を呼ぶ



Kinya Hibino
Sun Jan 14 21:50:32 JST 1996