SUBROUTINE

:サブルーチン副プログラムの第 1 文です。サブルーチン副プログラムは,CALL 文で,またはユーザー定義代入文によって呼び出され,特定の値は返しません。

形式

[prefix] SUBROUTINE name [([d-arg-list])]

prefix
(省略可能) 以下のいずれか。

type [keyword]
keyword [type]

type
データ型指定子。

keyword
以下のいずれか。

キーワード 意味
RECURSIVE 直接の再帰を可能にします。
PURE 手続が副作用を持たないことを指定します 。
ELEMENTAL 一度に 1 つの配列要素に作用する,純粋手続の制約された形式です。

name
サブルーチン名。

d-arg-list
1 つまたは複数の仮引数並び,または選択戻り指定子 (*)。

規則と振る舞い

サブルーチンは,CALL 文またはユーザー定義代入によって呼び出されます。サブルーチンが呼び出されると,仮引数 (存在する場合) は,呼び出しで指定された対応する実引数に結合されます。

実行は,SUBROUTINE 文の次にくる最初の実行構文または文から開始されます。END 文 (または RETURN 文) が実行された時点で,制御は呼び出し側のプログラム単位に返ります。

サブルーチン副プログラムは,FUNCTION 文,BLOCK DATA 文,PROGRAM 文,または他の SUBROUTINE 文を含むことはできません。ENTRY 文を使って,副プログラムに複数のエントリ・ポイント名を用意することが可能です。

以下の場合にサブルーチンに対するインタフェース宣言が必要になります。

サブルーチンが DLL にあり,プログラムから呼び出される場合,オプション DLLEXPORT または DLLIMPORT を使用します。これらは,ATTRIBUTES 指示文で指定することができます。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

CALLELEMENTALENTRYFUNCTIONINTERFACEPURERETURN関数とサブルーチン副プログラムの一般的な規則廃止事項と廃止予定事項引数結合プログラム単位と手続

次の例はサブルーチンを示しています。

	主プログラム		サブルーチン
	CALL HELLO_WORLD	SUBROUTINE HELLO_WORLD
	...			PRINT *, "Hello World"
	END			END SUBROUTINE

次の例は,選択戻り指定子を使用して,サブルーチンの完了時に制御がどこに移るかを決定しています。

	主プログラム				サブルーチン
	    CALL CHECK(A,B,*10,*20,C)		    SUBROUTINE CHECK(X,Y,*,*,Q)
	    TYPE *, 'VALUE LESS THAN ZERO'	    ...
	    GO TO 30				50  IF (Z)  60,70,80
	10  TYPE*, 'VALUE EQUALS ZERO'		60  RETURN
	    GO TO 30				70  RETURN 1
	20  TYPE*, 'VALUE MORE THAN ZERO'	80  RETURN 2
	30  CONTINUE				    END
	    ...

SUBROUTINE 文の引数並びは,CALL 文の引数並びの実引数 *10*20 に対応する,2 つの仮選択戻り引数を含んでいます。

Z の値が,以下のように戻り先を決定します。

(選択戻りは,Fortran 95 と Fortran 90 の廃止予定事項です)。

以下に他の例を示します。

	   SUBROUTINE GetNum (num, unit)
	   INTEGER num, unit
	10 READ (unit, '(I10)', ERR = 10) num
	   END