自由形式を使用し、モジュールおよび外部サブプログラムを使用するメインプログラムの例を以下に示します。
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 つのサンプルプログラムのようなファイルは、次のコマンドを使用して個別にコンパイルしリンクできます。
Linux* および Mac OS* X の例:
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
Windows* の例:
ifort /c array_calc.f90
ifort /c calc_aver.f90
ifort /c main.f90
ifort /exe:calc main.obj array_calc.obj calc_aver.obj
コマンドの詳細:
1 行目: -c (Linux および Mac OS X) オプションまたは /c (Windows) オプションはリンクを抑制し、オブジェクト・ファイルを保持します。このコマンドは、モジュールファイル array_calculator.mod とオブジェクト・ファイル array_calc.o (Linux および Mac OS X) または array_calc.obj (Windows) を作成します。MODULE 文の名前によって、array_calculator.mod モジュールファイルの名前が決定します。モジュールファイルは作業ディレクトリーに保存されます。
2 行目: オブジェクト・ファイル calc_aver.o (Linux および Mac OS X) または calc_aver.obj (Windows) を作成します。
3 行目: オブジェクト・ファイル main.o (Linux および Mac OS X) または main.out (Windows) を作成し、モジュールファイル array_calculator.mod を使用します。
4 行目: すべてのオブジェクト・ファイルを calc という名前の実行プログラムにリンクします。ファイルをリンクするには、ld コマンドの代わりに ifort コマンドを使用します。
パス定義に 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 (Linux および Mac OS X) オプションまたは /debug:full (Windows) オプションを付けてソースファイルをコンパイルし、オブジェクト・ファイルおよび実行プログラムファイルにソース行単位のデバッグを行うためのシンボルテーブル情報を追加します。
Linux および Mac OS X システムの場合、ifort コマンドで -o オプションを使用することにより、実行プログラムファイルに calc_debug という名前を付けられます。また、Mac OS X では、オブジェクト・ファイルが保存されるように -save-temps オプションを使用します。そうでない場合、デフォルトでオブジェクト・ファイルは削除されます。
ifort -g -o calc_debug array_calc.f90 calc_aver.f90 main.f90 (Linux) ifort -g -save-temps -o calc_debug array_calc.f90 calc_aver.f90 main.f90 (Mac OS X)
Windows で相当するオプションは次のとおりです。
ifort /debug:full /exe:calc_debug array_calc.f90 calc_aver.f90 main.f90
「Fortran プログラムのデバッグ」および関連するセクションを参照してください。