XL Fortran for AIX V8.1.1

ランゲージ・リファレンス

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.


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]