+----------------------------------IBM 拡張----------------------------------+
目的
VALUE 属性は、仮引き数と実引き数の間の引き数関連付けを指定します。 この関連付けによって、仮引き数に実引き数の値を渡すことができます。 Fortran 2003 ドラフト標準で、値による引き渡しインプリメンテーションに おいては、%VAL 組み込み関数の 標準準拠オプションが提供されています。
実引き数、および関連付けられた仮引き数は、単独で変更できます。 仮引き数の値または定義状況に対する変更は実引き数に影響を与えません。 VALUE 属性を持つ仮引き数は、実引き数の値と等しい初期値を持つ一時変数と関連付けられます。
構文
>>-VALUE--+----+--dummy_argument_name_list--------------------->< '-::-' |
規則
VALUE 属性は仮引き数にのみ指定する必要があります。
%VAL または %REF 組み込み関数を 使用して、VALUE 属性を持つ仮引き数または関連付けられた実引き数を参照してはなりません。
VALUE 属性を持つ仮引き数を指定したプロシージャーの参照では、 明示的インターフェースが必要です。
length パラメーターを省略した場合、または 1 の値を持つ初期化式を使用して指定した場合、 VALUE 属性を持つ仮引き数は文字型になります。
VALUE 属性を以下に指定してはなりません。
VALUE 属性と互換性のある属性 | ||||
---|---|---|---|---|
|
仮引き数が VALUE 属性と TARGET 属性の両方を持つ場合、 仮引き数に関連付けられたポインターはプロシージャーの実行後に未定義となります。
例
Program validexm1 integer :: x = 10, y = 20 print *, 'before calling: ', x, y call intersub(x, y) print *, 'after calling: ', x, y contains subroutine intersub(x,y) integer, value :: x integer y x = x + y y = x*y print *, 'in subroutine after changing: ', x, y end subroutine end program validexm1
次のような出力になります。
before calling: 10 20 in subroutine after changing: 30 600 after calling: 10 600
関連情報
詳細については、%VAL 組み込み関数を参照してください。
+------------------------------End of IBM 拡張-------------------------------+