通常,数値データの渡しには問題は生じないはずです。C プログラムが Fortran ルーチンに符号なしデータ型を渡した場合,ルーチンは引数を等価な符号付きデータ型として受け取ることができます。ただし,値が符号付き型の範囲を超えないように注意する必要があります。
等価なデータ型表は,Fortran,MASM,および Visual C/C++ での等価な数値データ型を要約しています。
C,Visual C++,および MASM は,Fortran の COMPLEX(4) および COMPLEX(8) 型を直接には実装していません。ただし,これと等価な構造体を書くことができます。COMPLEX(4) 型は,それぞれ 4 バイトの浮動小数点数である 2 つの欄を持っており,第 1 欄は実部,第 2 欄は虚部を含んでいます。COMPLEX 型は COMPLEX(4) 型と等価です。COMPLEX(8) 型は,各欄が 8 バイトの浮動小数点数を含んでいることを除けば同じです。
次に,Fortran COMPLEX 型用の Visual C/C++ の構造体定義を示します。
struct complex4 { float real, imag; }; struct complex8 { double real, imag; };
次に,Fortran COMPLEX 型用の MASM の構造体定義を示します。
COMPLEX4 STRUCT 4 real REAL4 0 imag REAL4 0 COMPLEX4 ENDS COMPLEX8 STRUCT 8 real REAL8 0 imag REAL8 0 COMPLEX8 ENDS
Fortran LOGICAL(2) の値は,2 バイトの指示子の値として格納されます (0 は偽。真の値の扱いは /fpscomp:[no]logicals コンパイラ・オプションによって決定されます)。Fortran LOGICAL(4) の値は,4 バイトの指示子の値として格納され,LOGICAL(1) は 1 バイトとして格納されます。LOGICAL 型は LOGICAL(4) と同じで,C の int 型と等価です。
Fortran の引数並び,モジュール,共通ブロック,または大域変数中では,LOGICAL 型の変数を C の int 型と同じ引数として使用することができます。共通ブロックで使用するときには,LOGICAL(4) 型の方が,それよりも短い版よりも優れています。
Visual C++ のクラス型は,クラスが仮想関数を定義しているか,基本クラスを持っている場合を除き,対応する C の struct 型と同じ構成を持っています。これらの機能を持たないクラスは,C の構造体と同じ方法で渡すことができます。