UNPACK(VECTOR, MASK, FIELD)

目的

1 次元配列からいくつかのまたは全部の配列をとり、再調整して別の (ほとんどの場合、より大きい) 配列にします。

クラス

変換関数

引き数の型と属性

VECTOR
任意のデータ型の 1 次元配列です。 少なくとも MASK 内の .TRUE. 値と同数のエレメントが VECTOR 内に なければなりません。

MASK
VECTOR のエレメントがアンパックされる時にどこに置かれるかを決定する論理配列です。

FIELD
マスク引き数と同じ形状と、VECTOR と同じデータ型を持っていなければなりません。 そのエレメントは、対応する MASK エレメントが値 .FALSE. を持っている 場合は必ず、結果配列に挿入されます。

結果の値

結果は MASK と同じ形状と、VECTOR と同じデータ型を持つ配列になります。

結果のエレメントは配列エレメント順に埋め込まれます。つまり、MASK 内の対応するエレメントが .TRUE. である場合は、結果のエレメントは VECTOR の次のエレメントで埋め込まれます。 それ以外の場合は、FIELD の対応するエレメントで埋め込まれます。

! VECTOR is the array (/ 5, 6, 7, 8 /),
! MASK is | F T T |, FIELD is | -1 -4 -7 |
!         | T F F |           | -2 -5 -8 |
!         | F F T |           | -3 -6 -9 |
 
! Turn the one-dimensional vector into a two-dimensional
! array.  The elements of VECTOR are placed into the .TRUE.
! positions in MASK, and the remaining elements are
! made up of negative values from FIELD.
       RES = UNPACK( VECTOR, MASK, FIELD )
! The result is | -1  6  7 |
!               |  5 -5 -8 |
!               | -3 -6  8 |
 
! Do the same transformation, but using all zeros for the
! replacement values of FIELD.
        RES = UNPACK( VECTOR, MASK, FIELD = 0 )
! The result is | 0 6 7 |
!               | 5 0 0 |
!               | 0 0 8 |
IBM Copyright 2003