XL Fortran for AIX V8.1.1

ランゲージ・リファレンス


プログラム単位、プロシージャー、およびサブプログラム

プログラム単位は 1 行以上の文字列で、ステートメント、注釈、および INCLUDE ディレクティブで構成されています。特に以下のものを指します。

実行可能プログラムは、1 つのメインプログラム、任意の数の外部サブプログラム、モジュール、およびブロック・データのプログラム単位からなるプログラム単位の集合体です。

メインプログラムまたはサブプログラムから、あるサブプログラムを呼び出して特定の処理を行わせることができます。プロシージャーを呼び出すと、参照されたサブプログラムが実行されます。

外部サブプログラムまたはモジュール・サブプログラムには、複数の ENTRY ステートメントが入っています。サブプログラムは、 ENTRY ステートメントごとに 1 つのプロシージャーを定義するのはもとより SUBROUTINE または FUNCTION ステートメント用に 1 つのプロシージャーを定義します。

外部プロシージャーは、外部サブプログラムまたは Fortran 以外のプログラム言語で作成されたプログラム単位のいずれかで定義されます。

メインプログラム、外部プロシージャー、ブロック・データのプログラム単位、およびモジュールの名前は、グローバル・エンティティーです。内部プロシージャーおよびモジュール・プロシージャーの名前は、ローカル・エンティティーです。

内部プロシージャー

外部サブプログラム、モジュール・サブプログラム、およびメインプログラムには、関数としてであれサブルーチンとしてであれ、 CONTAINS ステートメント以降に内部サブプログラムを組み込むことができます。

内部プロシージャーは、内部サブプログラムで定義します。内部サブプログラムは他の内部サブプログラムには組み込めません。モジュール・プロシージャーは、モジュール・サブプログラムまたはモジュール・サブプログラム内のエントリーで定義します。

内部プロシージャーおよびモジュール・プロシージャーは、次の点を除いて外部プロシージャーと同じです。

マイグレーションのためのヒント:

外部プロシージャーを内部サブプログラムに変えるか、またはモジュールの中に入れます。明示的インターフェースは、タイプの検査を行います。

FORTRAN 77 ソース

PROGRAM MAIN
  INTEGER A
  A=58
  CALL SUB(A)
C A MUST BE PASSED
END
SUBROUTINE SUB(A)
  INTEGER A,B,C   ! A must be redeclared
  C=A+B
END SUBROUTINE

Fortran 90 または Fortran 95 ソース

PROGRAM MAIN
  INTEGER :: A=58
  CALL SUB
  CONTAINS
  SUBROUTINE SUB
    INTEGER B,C
    C=A+B         ! A is accessible by host association
  END SUBROUTINE
END

インターフェースの概念

プロシージャーのインターフェースは、プロシージャー参照の形式を決定します。インターフェースは次の部分からなります。

プロシージャーの特性には次のようなものがあります。

有効範囲単位内でプロシージャーにアクセス可能であれば、プロシージャーはその有効範囲単位内で明示的または暗黙のどちらかのインターフェースをとります。この場合の規則は次のとおりです。

エンティティー インターフェース
仮プロシージャー インターフェース・ブロックがあるか、または
インターフェース・ブロックにアクセス可能な場
合、有効範囲単位内で明示的
その他のすべての場合は暗黙
外部サブプログラム インターフェース・ブロックがあるか、または
インターフェース・ブロックにアクセス可能な場
合、有効範囲単位内で明示的
その他のすべての場合は暗黙
結果文節付きの再帰的プロシージャー サブプログラムの当該有効範囲単位内で明示的
モジュール・プロシージャー 常に明示的
内部プロシージャー 常に明示的
総称プロシージャー 常に明示的
組み込みプロシージャー 常に明示的
ステートメント関数 常に暗黙

内部サブプログラムはインターフェース・ブロックには入れられません。

範囲単位指定内のプロシージャーは、アクセス可能な複数のインターフェースを持つことはできません。

ステートメント関数のインターフェースをインターフェース・ブロック内に指定することはできません。

明示的インターフェース

次の場合、プロシージャーは明示的インターフェースが必要となります。

  1. 次の条件でプロシージャーへの参照がある場合
  2. プロシージャーに次のものがある場合
  3. FORTRAN 95 の開始プロシージャーはエレメント型プロシージャーです。 FORTRAN 95 の終了

暗黙インターフェース

インターフェースが明確でない場合、つまりサブプログラムに明示インターフェースがない場合、プロシージャーは暗黙のインターフェースをとります。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]