自由形式を使用し、モジュールおよび外部サブプログラムを使用するメイン・プログラムの例を以下に示します。
CALC_AVERAGE 関数は、別個に作成されたファイルに収められており、インターフェイス・ブロックの ARRAY_CALCULATOR モジュールに依存します。
USE 文が ARRAY_CALCULATOR モジュールにアクセスします。このモジュールには、CALC_AVERAGE の関数定義が含まれています。
5 要素の配列が CALC_AVERAGE 関数に渡され、PRINT される値が関数から AVERAGE 変数へ返されます。
サンプル・プログラム:
!File: main.f90
!This program calculates the average of five numbers
PROGRAM MAIN
USE ARRAY_CALCULATOR
REAL, DIMENSION(5) :: A = 0
REAL :: AVERAGE
PRINT *, 'Type five numbers: '
READ (*,'(F10.3)') A
AVERAGE = CALC_AVERAGE(A)
PRINT *, 'Average of the five numbers is: ', AVERAGE
END PROGRAM MAIN
メイン・プログラムが参照するモジュールを以下に示します。この例では、インターフェイス・ブロックや形状引継ぎ配列など、さらに多くの Fortran 95/90 機能が示されています:
!File: array_calc.f90.
!Module containing various calculations on arrays.
MODULE ARRAY_CALCULATOR
INTERFACE
FUNCTION CALC_AVERAGE(D)
REAL :: CALC_AVERAGE
REAL, INTENT(IN) :: D(:)
END FUNCTION CALC_AVERAGE
END INTERFACE
!Other subprogram interfaces...
END MODULE ARRAY_CALCULATOR
メイン・プログラムが参照する CALC_AVERAGE の関数宣言を以下に示します:
!File: calc_aver.f90.
!External function returning average of array.
FUNCTION CALC_AVERAGE(D)
REAL :: CALC_AVERAGE
REAL, INTENT(IN) :: D(:)
CALC_AVERAGE = SUM(D) / UBOUND(D, DIM = 1)
END FUNCTION CALC_AVERAGE
プログラム開発の初期段階では、上記の 3 つのサンプル・プログラムのようなファイルは、次のコマンドを使用して個別にコンパイルしリンクできます:
ifort -c array_calc.f90
ifort -c calc_aver.f90
ifort -c main.f90
ifort -o calc main.o array_calc.o calc_aver.o
コマンドの詳細:
-c オプションはリンクを抑制し、.o ファイルを保持します。
最初のコマンドでは、ファイル array_calculator.mod および array_calc.o (MODULE 文にある名前によって、array_calculator.mod モジュール・ファイルの名前が決定します) が作成されます。モジュール・ファイルは作業ディレクトリに保存されます。
2 番目のコマンドでは、ファイル calc_aver.o が作成されます。
3 番目のコマンドでは、ファイル main.o が作成され、モジュール・ファイル array_calculator.mod が使用されます。
最後のコマンドでは、すべてのオブジェクト・ファイルが calc という名前の実行プログラムにリンクされます。ファイルをリンクするには、ld コマンドの代わりに ifort コマンドを使用します。
ファイル名を指定する順番は重要です。この ifort コマンドでは次の順でファイルを指定し、コンパイル、リンクが行われます:
モジュールを定義するファイル array_calc.f90 がコンパイルされ、オブジェクト・ファイルおよび array_calculator.mod ファイルが作成されます。
外部関数 CALC_AVERAGE を含むファイル calc_aver.f90 をコンパイルします。
ファイル main.f90 (メイン・プログラム) をコンパイルします。USE 文は、モジュール・ファイルの array_calculator.mod を参照します。
ld を使用して、メイン・プログラムとすべてのオブジェクト・ファイルを calc という名前の実行プログラム・ファイルにリンクします。
パス定義に calc が格納されたディレクトリが含まれている場合、プログラムの名前を入力するだけで実行できます。
calc
サンプル・プログラムを実行すると、メイン・プログラムの PRINT 文と READ 文によって、ユーザとプログラムの間で次のようなやり取りが行われます:
Type five numbers:
55.5
4.5
3.9
9.0
5.6
Average of the five numbers is: 15.70000
デバッガを使用してプログラムをデバッグするには、-g オプションを付けてソースファイルをコンパイルし、オブジェクト・ファイルおよび実行プログラム・ファイルにソース行単位のデバッグを行うためのシンボルテーブル情報を追加します。また、ifort コマンドで -o オプションを使用することにより、実行プログラム・ファイルに calc_debug という名前を付けられます:
ifort -g -o calc_debug array_calc.f90 calc_aver.f90 main.f90
「idb を使用したデバッグの概要」および関連するセクションを参照してください。