INTENT

文と属性: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 つ。

d-arg
仮引数の名前。仮手続または仮ポインタであってはなりません。

規則と振る舞い

INTENT 文は,副プログラムまたはインタフェース本体の宣言部でしか使用できません。

仮引数に対して INTENT 属性が指定されていない場合,その用途は結合された実引数の制限に従って決まります。

関数がユーザー定義演算子を指定している場合,仮引数の用途は IN でなくてはなりません。

サブルーチンがユーザー定義代入を指定している場合,第 1 の引数の用途は OUT または INOUT,第 2 の引数の用途は IN でなくてはなりません。

用途 IN の仮引数 (またはそのような仮引数の部分オブジェクト) は,以下のものとして使われてはなりません。

実引数がベクトル添字を持つ部分配列である場合,定義または再定義された (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