配列からいくつかの、または全部のエレメントをとり、マスクの制御下でそれらをパックして 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.