目的
配列からいくつかの、または全部のエレメントをとり、マスクの制御下でそれらをパックして 1 次元配列にします。
クラス
変換関数
引き数の型と属性
結果の値
結果は、ARRAY と同じデータ型を持つ 1 次元配列になります。
結果のサイズは、オプションの引き数によって次のように異なります。
ARRAY 内の配列エレメントが配列エレメントの順に取り出され、結果を形成します。 MASK 内の対応する配列エレメントが .TRUE. である場合 は、ARRAY からのエレメントが結果の終わりに置かれます。
エレメントが結果内に空のままで残る (VECTOR が存在し、 mask 内の .TRUE. 値 よりも多くのエレメントを持っているのが原因) と、 結果内の残りのエレメントは VECTOR からの対応する値に設定されます。
例
! A is the array | 0 7 0 | ! | 1 0 3 | ! | 4 0 0 | ! Take only the non-zero elements of this sparse array. ! If there are less than six, fill in -1 for the rest. RES = PACK(A, MASK= A .NE. 0, VECTOR=(/-1,-1,-1,-1,-1,-1/) ! The result is (/ 1, 4, 7, 3, -1, -1 /). ! Elements 1, 4, 7, and 3 are taken in order from A ! because the value of MASK is true only for these ! elements. The -1s are added to the result from VECTOR ! because the length (6) of VECTOR exceeds the number ! of .TRUE. values (4) in MASK.