SUBROUTINE

目的

SUBROUTINE ステートメントはサブルーチン・サブプログラムの 最初のステートメントです。

構文



   .------------.
   V            |
>>---+--------+-+--SUBROUTINE--name----------------------------->
     '-prefix-'
 
>--+-------------------------------+---------------------------->
   '-(--+---------------------+--)-'
        '-dummy_argument_list-'
 
>--+------------------------------------------------+----------><
   '-BIND--(--C--+-----------------------------+--)-'
                 '-,--NAME-- = --binding_label-'
 
 

prefix
次のうちの 1 つです。

name
サブルーチン・サブプログラムの名前です。

+-------------------------Fortran 2003 ドラフト標準--------------------------+

binding_label
スカラー文字初期化式

+----------------------End of Fortran 2003 ドラフト標準----------------------+

規則

最大 1 つの prefix を指定できます。

反復をあらかじめ指定している場合を除いて、サブルーチン名を、 サブルーチンの有効範囲内の他のステートメントに指定することはできません。

以下の場合、キーワード RECURSIVE を直接または間接的に指定しなければ なりません。

キーワード RECURSIVE を指定した場合、 サブプログラムの中でプロシージャー・インターフェースは明示的になります。

+---------------------------------Fortran 95---------------------------------+

PURE または ELEMENTAL プレフィックスを使用すると、コンパイラーが、副次作用がないかのように、どのような順序にでもサブルーチンを呼び出せることを指示します。 基本プロシージャーの場合、キーワード ELEMENTAL の指定が必要です。ELEMENTAL キーワードを指定している場合、RECURSIVE キーワードを指定することはできません。

+-----------------------------End of Fortran 95------------------------------+

+----------------------------------IBM 拡張----------------------------------+

-qrecur コンパイラー・オプションを指定すると、 外部プロシージャーを再帰的に呼び出すことができます。 ただし、SUBROUTINE ステートメントがキーワード RECURSIVE を指定している場合、XL Fortran はこのオプションを無視します。

+------------------------------End of IBM 拡張-------------------------------+

+-------------------------Fortran 2003 ドラフト標準--------------------------+

BIND キーワードは、プロシージャーが C プログラミング言語からのアクセスに使用する結合ラベルを暗黙的あるいは明示的に定義します。結合ラベルを仮引き数に対して指定することはできません。 仮引き数のサイズをゼロにすることはできません。BIND 属性を持つプロシージャーの仮引き数は、相互運用可能型および型付きパラメーターを持つ必要があり、ALLOCATABLEOPTIONAL、または POINTER 属性を持つことはできません。

BIND 属性は、内部プロシージャーに対しては指定できません。

+----------------------End of Fortran 2003 ドラフト標準----------------------+

RECURSIVE SUBROUTINE SUB(X,Y)
  INTEGER X,Y
  IF (X.LT.Y) THEN
    RETURN
  ELSE
    CALL SUB(X,Y+1)
  END IF
END SUBROUTINE SUB

関連情報

IBM Copyright 2003