変形組込み関数 (総称):次元数 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 がスカラの場合) か,field の i 番目の要素 (field が配列の場合) によって充填されます。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
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