実行プログラムの作成、実行、デバッグ

自由形式を使用し、モジュールおよび外部サブプログラムを使用するメイン・プログラムの例を以下に示します。

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

 コマンドの詳細:

ファイル名を指定する順番は重要です。この 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 オプションを付けてソースファイルをコンパイルし、オブジェクト・ファイルおよび実行プログラム・ファイルにソース行単位のデバッグを行うためのシンボルテーブル情報を追加します。また、ifort コマンドで -o オプションを使用することにより、実行プログラム・ファイルに calc_debug という名前を付けられます:

ifort -g -o calc_debug array_calc.f90 calc_aver.f90 main.f90

「idb を使用したデバッグの概要」および関連するセクションを参照してください。