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