大規模な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/の要素 の並びは一致していなければなりません。メンバーの名前はどうでもよいので すが。