ナビゲーション:前へ 上へ 次へ
ナビゲーション:前へ 上へ 次へ
8.18 VALUE属性
VALUE属性は引数が値で引き渡されることを指定します。8.18.1 構文
VALUE属性はVALUE文で指定するか、もしくは型宣言文の中で VALUEキーワードを用いて指定します。VALUE文の構文は次のとおりです:
VALUE [ :: ] name [ , name ] ...
VALUE属性はスカラ仮引数にのみ指定可能です。
VALUE仮引数を持つ手続きは明示的な引用仕様を持つものでなくてはなりません。
8.18.2 セマンティクス
VALUE属性を持つ仮引数は“値渡し”です。これは引数の局所コピーがルー チンに入る際に作られ、仮引数への変更は結合された実引数に影響を与えない、また逆 も真であることを意味します。VALUE仮引数はINTENT(IN)は許されますが INTENT(INOUT)もしくはINTENT(OUT)は許されません。
8.18.3 用例
PROGRAM value_example
INTEGER :: i = 3
CALL s(i)
PRINT *,i ! This will print the value 3
CONTAINS
SUBROUTINE s(j)
INTEGER,VALUE :: j
j = j + 1 ! This changes the local J without affecting the actual argument
PRINT *,j ! This will print the value 4
END SUBROUTINE
END
この例は特に実用性を意図したものではなく、単に機能を紹介するためのものです。
ナビゲーション:前へ 上へ 次へ
