文:サブルーチン副プログラムの第 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) にある場合
サブルーチンが DLL にあり,プログラムから呼び出される場合,オプション DLLEXPORT または DLLIMPORT を使用します。これらは,ATTRIBUTES 指示文で指定することができます。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
CALL,ELEMENTAL,ENTRY,FUNCTION,INTERFACE,PURE,RETURN,関数とサブルーチン副プログラムの一般的な規則,廃止事項と廃止予定事項,引数結合,プログラム単位と手続
例
次の例はサブルーチンを示しています。
主プログラム サブルーチン 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 の値が,以下のように戻り先を決定します。
Z < 0 であれば,制御は通常どおりに戻り,主プログラムの CALL CHECK に続く最初の実行文に制御が移ります。
Z == 0 であれば,主プログラムの文番号 10 に戻ります。
Z > 0 であれば,主プログラムの文番号 20 に戻ります。
(選択戻りは,Fortran 95 と Fortran 90 の廃止予定事項です)。
以下に他の例を示します。
SUBROUTINE GetNum (num, unit) INTEGER num, unit 10 READ (unit, '(I10)', ERR = 10) num END