ALLOCATE

:割付け配列とポインタ指示先のための記憶域を動的に作成します。割り付けられる記憶域空間は初期化されません。

形式

ALLOCATE (object[(s-spec)][,object[(s-spec[,s-spec...])]]...[,STAT=sv])

object
割り付けるオブジェクト。変数名または構造体成分で,ポインタまたは割付け配列でなくてはなりません。オブジェクトは長さゼロの文字型であってもかまいません。

s-spec
[lower-bound:]upper-bound 形の形状宣言。上限と下限はスカラ整数式でなくてはなりません。形状宣言の数は,object の次元数と等しくなくてはなりません。

sv
割付け状態が格納されるスカラ整数変数。

規則と振る舞い

s-spec に含まれる上限または下限は,同じ ALLOCATE 文中の割付け可能オブジェクトを引数として取る配列問合せ関数を含んだ式であってはなりません。たとえば,次の文は無効です。

	INTEGER ERR
	INTEGER, ALLOCATABLE :: A(:), B(:)
	...
	ALLOCATE(A(10:25), B(SIZE(A)), STAT=ERR)	! 関数 SIZE の引数としての
							! A は無効です。

STAT 変数を指定する場合,それが置かれている ALLOCATE 文中で割り付けを行うことはできません。割り付けが成功すると,変数はゼロに設定されます。割り付けが失敗すると,エラーが発生し,変数は (実行時エラーを表す) 正の整数値に設定されます。STAT 変数が指定されていないときにエラーが発生すると,プログラムの実行が終了させられます。

割付け配列に対する記憶域を開放するには,DEALLOCATE を使用します。

割付け配列が現在割り付けられているかどうかを判断するには,ALLOCATED 組込み関数を使います。

ポインタが現在指示先に結合されているかどうかを判断するには,ASSOCIATED 組込み関数を使います。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

ALLOCATABLEALLOCATEDASSOCIATEDDEALLOCATEPOINTER動的な割付け

次に ALLOCATE 文の例を示します。

	INTEGER J, N, ALLOC_ERR
	REAL, ALLOCATABLE :: A(:), B(:,:)
	...
	ALLOCATE(A(0:80), B(-3:J+1, N), STAT = ALLOC_ERR)

以下に他の例を示します。

	INTEGER J, N, ALLOC_ERR
	REAL, ALLOCATABLE :: A(:), B(:,:)
	...
	ALLOCATE(A(0:80), B(-3:J+1, N), STAT = ALLOC_ERR)