PACK(ARRAY, MASK, VECTOR)

目的

配列からいくつかの、または全部のエレメントをとり、マスクの制御下でそれらをパックして 1 次元配列にします。

クラス

変換関数

引き数の型と属性

ARRAY
ソース配列で、エレメントは結果の一部になります。 どのようなデータ型でも持つことができます。

MASK
型 は論理型でなければならず、ARRAY と 適合可能でなければなりません。 これは、ソース配列からどのエレメントがとられるかを判別します。 それがスカラーである場合は、その値は ARRAY 内のすべてのエレメントに適用されます。

VECTOR (オプション)
埋め込み配列で、マスクによって選択されたエレメントの数が十分でない場合に結果を埋め込むのに、この配列の エレメントが使用されます。 これは、ARRAY と同じデータ型と型付きパラメーターで、少なくとも MASK 内の真の値と同数の エレメントを持つ 1 次元配列です。 MASK が .TRUE. の値を持つスカラーである場合 は、VECTOR は最低でも ARRAY 内の配列エレメントと 同数のエレメントを持っていなければなりません。

結果の値

結果は、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.
IBM Copyright 2003