Fortran モジュール名と ATTRIBUTES

Fortran モジュール要素 (データと手続) は,他の外部要素とは異なる外部名を持ちます。モジュール名は次の規約を使用します。

	_MODULENAME_mp_ENTITY [ @stacksize ]

MODULENAME はモジュールの名前であり,基本設定ではすべて大文字です。ENTITY は,MODULENAME に含まれているモジュール手続またはモジュール・データ名です。ENTITY も,やはり基本設定ではすべて大文字です。_mp_ はモジュール名と要素名間の区切り子で,つねに小文字です。

次に例を示します。

	MODULE mymod
	   INTEGER a
	   CONTAINS
	     SUBROUTINE b (j)
	      INTEGER j
	     END SUBROUTINE
	END MODULE

この場合,ia32 システムのコンパイル後の .OBJ ファイルには,次のシンボルが定義されます。

	_MYMOD_mp_A
	_MYMOD_mp_B@4

ia64 システムでは,次のシンボルが定義されます。

	MYMOD_mp_A
	MYMOD_mp_B

コンパイラ・オプションは,モジュール・データと手続の名付けに影響を与えることがあります。


注意ALIAS を除き,ATTRIBUTES オプションはモジュール名には影響を与えず,モジュール名は大文字のままになります。

次表に,上のサンプル・モジュールのサブルーチンに個々の ATTRIBUTES オプションがどのような影響を与えるかを示します。

Fortran モジュール名に対する ATTRIBUTES オプションの効果

ルーチン 'b' に対して指定された ATTRIBUTES オプション ia32 システムでの .OBJ ファイル中の手続名 ia64 システムでの .OBJ ファイル中の手続名
なし _MYMOD_mp_B@4 MYMOD_mp_B
C _MYMOD_mp_b MYMOD_mp_b
STDCALL _MYMOD_mp_b@4 MYMOD_mp_b
ALIAS 他のすべてを置換し別名で指定された名前が使用される 他のすべてを置換し別名で指定された名前が使用される
VARYING 名前に対する影響はなし 名前に対する影響はなし

他の言語から Fortran モジュールを呼び出したり,モジュール・データを参照するコードを書くことができます。他の名付け規約と呼び出し規約と同様に,モジュール名は 2 つの言語間で一致していなくてはなりません。一般に,これは Fortran で C または STDCALL の規約を使用し,別の言語でモジュールを定義する場合,ALIAS オプションを使って Fortran での名前に一致させるということを意味しています。「言語が混在したプログラミングにおけるモジュールの使用」に例があります。