インテル® Fortran コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
複数のプロジェクトで同じソースコードを使用することで起こりうる混乱を回避するため、ルーチンをモジュールおよびサブモジュール単位で整理します。モジュールとは、データ・オブジェクト、引数、構造体、プロシージャー、および演算子のようなエンティティーの仕様を持つプログラムユニットの種類です。これらのプリコンパイル済みの仕様と定義は、複数のプログラムユニットでも使用できます。モジュール・エンティティーへの部分的あるいは完全なアクセスには、プログラムの USE 文を使用します。一般的にモジュールは、グローバルデータの仕様、または派生型および関連した演算子の仕様を記述するために定義されます。
モジュールはプログラムを整理するのに極めて便利な手段です。プログラマーは次のモジュールを設定できます。
頻繁に使用されるルーチン
特定のオペレーティング・システムに対して固有のデータ定義
システム依存の言語拡張
サブモジュールは、プロシージャーのインターフェイスを実装から切り離し、アプリケーションのビルドと保守を容易にします。
USE 文でモジュールにアクセスするには、モジュールのソースを .mod ファイルにコンパイルする必要があります。.mod ファイルの名前は、ソースファイル名ではなく、モジュール名を表します。同様に、サブルーチンは .smod ファイルにコンパイルします。サブルーチンの親モジュールやサブモジュールを先にコンパイルする必要があります。モジュールやサブモジュールをコンパイルすると、オブジェクト・ファイル (.o または .obj) が作成されます。アプリケーションをリンクする場合、このオブジェクト・ファイルも含めます。
モジュールを含む USE 文があるソースをコンパイルする場合、コンパイラーは対応する .mod ファイルの検索にインクルード・ファイルと同じ場所を参照します。サブモジュール・ファイル (.smod) は、子サブモジュールをコンパイルする場合にのみ使用されます。
一部のプログラムでは、複数のディレクトリーに格納されたモジュールを参照することがあります。プログラムのコンパイル時に、I コンパイラー・オプションを使用して、プログラムに含める必要がある .mod および .smod ファイルの場所を指定できます。
Fortran 標準の組込みモジュールは、コンパイラー・バイナリーやライブラリーとともにシステム・ディレクトリーにあります。ファイル拡張子は .modintr で、Fortran ソースに "USE, INTRINSIC" が含まれる場合にのみ検索されます。
modulepath コンパイラー・オプションを使用して、モジュールファイルを作成するディレクトリーを指定できます。このオプションを使用しない場合は、モジュールファイルは現在のディレクトリーに作成されます。
ディレクトリーから .mod および .smod ファイルが検索される順序は、次のとおりです。
USE 文が含まれるソースファイルのディレクトリー
modulepath コンパイラー・オプションで指定されたディレクトリー
現在の作業ディレクトリー
-Idir (Linux* および macOS*) または /include (Windows*) オプションで指定されたディレクトリー
環境変数 CPATH または INCLUDE で指定されたディレクトリー
標準のシステム・ディレクトリー
依存プロジェクトを含む Microsoft* Visual Studio* プロジェクトの一部としてビルドする場合、Fortran ビルドシステムは自動的に依存プロジェクトに対応する .mod ファイルを検索します。
ほかのプログラムやサブプログラムから参照される前に、モジュールファイルが作成されていることを確認する必要があります。モジュールとその USE 文が同じソースファイルにある場合、モジュールのほうが先に記述されていなければなりません。
コンパイルするファイルに 1 つ以上のモジュールが定義されている場合、コンパイラーはオブジェクト・ファイルと 1 つ以上の .mod または .smod ファイルを生成します。
例えば、以下のように定義されたモジュールを含む a.f90 ファイルについて考えてみます。
a.f90 モジュール |
---|
|
次のコンパイラー・コマンドを実行します。
ifort -c a.f90
このコマンドにより、次のファイルが生成されます。
test.mod
payroll.mod
a.o (Linux* および macOS*)
a.obj (Windows*)
.mod ファイルには、プログラム a.f90 で定義されたモジュールに関する必要な情報が含まれています。
次の例では、mod_def.f90 プログラムを使用します。このプログラムには、以下のように定義されたモジュールが含まれています。
mod_def.f90 モジュール |
---|
|
次のように、プログラムをコンパイルします。
ifort -c mod_def.f90
現在のディレクトリーに、mod_def.o オブジェクト・ファイル (Linux* および macOS*) または mod_def.obj オブジェクト・ファイル (Windows*) と definedmod.mod ファイルが作成されます。
.mod ファイルを別のディレクトリーで使用する例 |
---|
|
上記のプログラムをコンパイルする場合は、I コンパイラー・オプションを使用して、definedmod.mod ファイルが格納されているパスを指定します。