Fortran モジュール名と ATTRIBUTES

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

コンパイラー・オプションを使用することで、モジュールデータおよびモジュール・プロシージャーの名前付けを設定できます。

Note icon

ALIAS 以外の ATTRIBUTES オプションはモジュール名に影響を与えません。

以下の表では、上記のサンプルモジュールの各サブルーチンに、個々の ATTRIBUTES オプションがどのように影響を与えるかを示します。

Fortran モジュール名に対する 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 での名前を一致させる必要があることを意味します。サンプルについては、「言語が混在したプログラミングにおけるモジュールの使用」を参照してください。