| UNPACK |
UNPACK| 書式 | UNPACK(VECTOR,MASK,FIELD) | ||||||
| 機能 |
1次元配列VECTORの要素をMASKに従って配列の指定した位置に配布する。 配列VECTORの要素順序に従って、MASKの真である要素のi番目(i=1,2,…,t)に 対応する要素の値を、VECTOR(i)とする。 ここでtは、MASK中の真である要素の個数とする。 他の要素は、FIELDがスカラであるとき、それぞれFIELDに等しい値とし、 FIELDが配列であるとき、FIELDの対応する要素と等しい値とする。 | ||||||
| 引数 |
| ||||||
| 戻り値 | 型、種別型パラメタは引数VECTORと同じで、形状は引数MASKと同じである。 |
サンプルプログラム
┌───┬───┬───┐
vect│ 7 │ 8 │ 9 │
└───┴───┴───┘
┌─────┬─────┬─────┐
mask│FALSE│TRUE │FALSE│
│TRUE │FALSE│FALSE│
│FALSE│FALSE│TRUE │
└─────┴─────┴─────┘
┌───┬───┬───┐ ┌───┬───┬───┐
f│ 1 │ 1 │ 1 │ a│ 1 │ 8 │ 1 │
│ 2 │ 2 │ 2 │ │ 7 │ 2 │ 2 │
│ 3 │ 3 │ 3 │ │ 3 │ 3 │ 9 │
└───┴───┴───┘ └───┴───┴───┘
INTEGER :: i
INTEGER,DIMENSION(3) :: vect
INTEGER,DIMENSION(3,3) :: f,a
LOGICAL,DIMENSION(3,3) :: mask
vect=(/7, 8, 9/)
mask(1,:)=(/.FALSE., .TRUE. , .FALSE./)
mask(2,:)=(/.TRUE. , .FALSE., .FALSE./)
mask(3,:)=(/.FALSE., .FALSE., .TRUE. /)
f(1,:)=1; f(2,:)=2; f(3,:)=3
a=UNPACK(vect,mask,f)
WRITE(*,'(3I2)') (a(i,:),i=1,3)
| 実行例 |