UNPACK

変形組込み関数 (総称):次元数 1 の配列から要素を取り出しそれらを選別値に従って別の (おそらくはより大きい) 配列にアンパックします。

形式

result = UNPACK (vector, mask, field)

vector
(入力) 任意のデータ型の次元数 1 の配列。その大きさは,mask 中の真の要素の数を t として,t 以上でなくてはなりません。

mask
(入力) 論理型配列。これは,vector の要素がアンパック時にどこに格納されるかを決定します。

field
(入力) vector と同じ型および型パラメタ。mask と形状適合でなくてはなりません。field の中の要素は,対応する mask 要素の値が偽である場合に,結果配列に挿入されます。

結果

結果は,mask と同じ形状を持ち,vector と同じ型および型パラメタを持つ配列になります。

結果配列中の要素は,配列要素順序で充填されます。mask の要素 i が真ならば,結果の対応する要素は vector 中の次の要素によって充填されます。そうでなければ,field (field がスカラの場合) か,fieldi 番目の要素 (field が配列の場合) によって充填されます。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

PACKRESHAPESHAPE

N が配列

	[ 0  0  1 ]
	[ 1  0  1 ]
	[ 1  0  0 ]

P が配列 (2, 3, 4, 5)Q が配列

	[ T  F  F ]
	[ F  T  F ]
	[ T  T  F ]

であるとします。

UNPACK (P, MASK=Q, FIELD=N) は結果

	[ 2  0  1 ]
	[ 1  4  1 ]
	[ 3  5  0 ]

を生成します。

UNPACK (P, MASK=Q, FIELD=1) は結果

	[ 2  1  1 ]
	[ 1  4  1 ]
	[ 3  5  1 ]

を生成します。

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

	LOGICAL mask (2, 3)
	INTEGER vector(3) /1, 2, 3/, AR1(2, 3)
	mask = RESHAPE((/.TRUE.,.FALSE.,.FALSE.,.TRUE.,&
			.TRUE.,.FALSE./), (/2, 3/))
	! vector = [1 2 3]
	! mask = T F T
	!        F T F
	AR1 = UNPACK(vector, mask, 8)
	! 1 8 3
	! 8 2 8 を返します。
	END