Fortran モジュール・エンティティー (データとプロシージャー) は、他の外部エンティティーとは異なる外部名を持ちます。モジュール名は次の規則を使用します。
modulename_mp_entity_(Linux* および Mac OS* X)
_MODULENAME_mp_ENTITY [ @stacksize ] (Windows)
modulename はモジュールの名前です。Windows では、デフォルトで大文字になります。
entity は、MODULENAME に含まれているモジュール・プロシージャー名またはモジュールデータ名です。Windows では、ENTITY はデフォルトで大文字になります。
_mp_ はモジュール名とエンティティー名の間に挿入される区切り文字で、常に小文字です。
次に例を示します。
MODULE mymod INTEGER a CONTAINS SUBROUTINE b (j) INTEGER j END SUBROUTINE END MODULE
この場合、Linux 上ではコンパイル後のオブジェクト・ファイルに次のシンボルが定義されます。(Mac OS X では、シンボルは下線で始まります。)
mymod_mp_a_ mymod_mp_b_
この場合、IA-32 アーキテクチャーの Windows 上ではコンパイル後のオブジェクト・ファイルに次のシンボルが定義されます。
_MYMOD_mp_A _MYMOD_mp_B
コンパイラー・オプションを使用することで、モジュールデータおよびモジュール・プロシージャーの名前付けを設定できます。
ALIAS 以外の ATTRIBUTES オプションはモジュール名に影響を与えません。
以下の表では、上記のサンプルモジュールの各サブルーチンに、個々の ATTRIBUTES オプションがどのように影響を与えるかを示します。
ルーチン 'b' に対して指定された ATTRIBUTES プロパティー |
IA-32 アーキテクチャー・ベースのシステム上の .OBJ ファイル内のプロシージャー名 |
インテル® 64 および IA-64 アーキテクチャー・ベースのシステム上の .OBJ ファイル内のプロシージャー名 |
---|---|---|
なし |
mymod_mp_b_ (Linux) _mymod_mp_b_ (Mac OS X) _MYMOD_mp_B (Windows) |
mymod_mp_b_ (Linux) _mymod_mp_b_ (Mac OS X) MYMOD_mp_B (Windows) |
C |
mymod_mp_b_ (Linux) _mymod_mp_b_ (Mac OS X) MYMOD_mp_b (Windows) |
mymod_mp_b (Linux) _mymod_mp_b (Mac OS X) MYMOD_mp_b (Windows) |
STDCALL (Windows のみ) |
_MYMOD_mp_b@4 |
MYMOD_mp_b |
ALIAS |
ALIAS 以外のプロパティーによる設定をエイリアスで指定した名前で上書きします |
ALIAS 以外のプロパティーによる設定をエイリアスで指定した名前で上書きします |
VARYING |
名前への影響はありません |
名前への影響はありません |
他の言語から Fortran モジュールを呼び出したり、モジュールデータを参照するコードを書くことができます。他の命名規則と呼び出し規則と同じように、モジュール名は 2 つの言語間で一致していなければなりません。一般に、これは、Fortran で C または STDCALL の規則を使用し、また、別の言語でモジュールを定義する場合は ALIAS オプションを使用して、Fortran での名前を一致させる必要があることを意味します。サンプルについては、「言語が混在したプログラミングにおけるモジュールの使用」を参照してください。