| 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)
| 実行例 |