文と属性:1 つまたは複数の仮引数の授受特性を指定します。
INTENT 属性は型宣言文または INTENT 文で指定することができ,以下のいずれかの形式を取ります。
形式
型宣言文
type, [att-ls,] INTENT (intent-spec) [,att-ls] :: d-arg [,d-arg]...
文
INTENT [::] d-arg [,d-arg]...
type
データ型指定子。
att-ls
省略可能な属性指定子並び。
intent-spec
以下の指定子のうちの 1 つ。
IN - 仮引数が,手続にデータを提供するためだけの目的に使用されることを宣言します。仮引数は,手続の実行中に再定義されては (または不定になっては) なりません。
結合される実引数はすべて式でなくてはなりません。
結合される実引数はすべて確定可能でなくてはなりません。
結合される実引数はすべて確定可能でなくてはなりません。
d-arg
仮引数の名前。仮手続または仮ポインタであってはなりません。
規則と振る舞い
INTENT 文は,副プログラムまたはインタフェース本体の宣言部でしか使用できません。
仮引数に対して INTENT 属性が指定されていない場合,その用途は結合された実引数の制限に従って決まります。
関数がユーザー定義演算子を指定している場合,仮引数の用途は IN でなくてはなりません。
サブルーチンがユーザー定義代入を指定している場合,第 1 の引数の用途は OUT または INOUT,第 2 の引数の用途は IN でなくてはなりません。
用途 IN の仮引数 (またはそのような仮引数の部分オブジェクト) は,以下のものとして使われてはなりません。
DO 変数または DO 形反復変数
代入文の変数
ポインタ代入文の pointer-object
ALLOCATE または DEALLOCATE 文の object または STAT 変数
READ 文中の入力項目
変数群要素名が READ 文の NML 指定子に現れる場合,NAMELIST 文中の変数名
WRITE 文の内部ファイル装置
INQUIRE 文の確定可能変数
I/O 文の IOSTAT または SIZE 指定子
結合された仮引数の用途が OUT または INOUT である場合,明示的なインタフェースを持つ手続引用中の実引数
実引数がベクトル添字を持つ部分配列である場合,定義または再定義された (OUT または INOUT の用途を持つ) 仮配列に結合することはできません。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS DLL LIB
関連情報
例
次の例は,INTENT 属性を宣言する型宣言文を示しています。
SUBROUTINE TEST(I, J) INTEGER, INTENT(IN) :: I INTEGER, INTENT(OUT), DIMENSION(I) :: J
以下に INTENT 文の例を示します。
SUBROUTINE TEST(A, B, X) INTENT(INOUT) :: A, B ... SUBROUTINE CHANGE(FROM, TO) USE EMPLOYEE_MODULE TYPE(EMPLOYEE) FROM, TO INTENT(IN) FROM INTENT(OUT) TO ...
以下に別の例を示します。
! 平均値を計算し,平均値の 3 乗を返します。 TYPE DATA INTEGER count REAL average END TYPE . . . SUBROUTINE AVERAGE(value,data1,cube_ave) TYPE(DATA) data1 REAL dummy ! value は変更できません。一方,cube_ave を利用する前に, ! 定義しておかなければなりません。data1 は,手続が呼び出さ ! れた時に定義され,サブルーチンで再定義されます。 INTENT(IN)::value; INTENT(OUT)::cube_ave INTENT(INOUT)::data1 ! AVERAGE が呼び出された回数が data1 に設定されます。 dummy = data1%count*data1%average + value data1%count = data1%count + 1 data1%average = dummy/data1%count cube_ave = data1%average**3 END SUBROUTINE