| CSHIFT | 
CSHIFT| 書式 | CSHIFT(ARRAY,SHIFT[,DIM]) | ||||||
| 機能 | 
次元数が1である配列上で要素の循環移動(Circular Shift)を行うか、
または次元数が2以上である配列式の指定された次元に沿った1次元の
部分配列のすべてにおいて要素の循環移動を行う。 部分配列の端から外にはみ出した要素は、反対側の端に送られる。 それぞれの部分配列は、異なる方向に異なる量だけ移動してもよい。 (1)ARRAYが1次元配列であるとき、結果のi番目の要素は、 ARRAY(1+MODULO(i+SHIFT-1,SIZE(ARRAY)))とする。 (2)ARRAYが2次元以上の配列であるとき、結果の部分配列 (s1,s2,…,sDIM-1,:,sDIM+1, …,sn)の値は、CSHIFT(ARRAY(s1,s2, …,sDIM-1,:,sDIM+1,…,sn),sh,1)とする。 ここでshは、SHIFTまたはSHIFT(s1,s2, …,sDIM-1,sDIM+1,…,sn) とする。 nはARRAYの次元数とする。  | ||||||
| 引数 | 
  | ||||||
| 戻り値 | 型、種別型パラメタおよび形状は引数ARRAYと同じである。 | 
サンプルプログラム
  ┌─┬─┬─┐      ┌─┬─┬─┐
v │1│2│3│    v │1│2│3├──┐
  ├─┼─┼─┤      ├─┼─┼─┤  │
  │4│5│6│ ┌────┤4│5│6│  │
  └┬┴┬┴┬┘ │左へ1 └─┴─┴─┘  │
   └┐│ │  ↓          右へ1↓
   ┌┼┼─┘ ┌─┬─┬─┐    ┌─┬─┬─┐
   ││└─┐ │5│6│4│    │3│1│2│
   │└┐ │ └─┴┬┴─┘    └─┴┬┴─┘
   ↓ ↓ ↓    │          │
  ┌─┬─┬─┐   │  ┌─┬─┬─┐ │
v1│3│1│2│   │v2│3│1│2│ │
  ├─┼─┼─┤   │  ├─┼─┼─┤ │
  │6│4│5│   └─→│5│6│4│←┘
  └─┴─┴─┘      └─┴─┴─┘
    INTEGER :: i
    INTEGER,DIMENSION(2,3) :: v,v1,v2
    v(1,:)=(/1, 2, 3/)
    v(2,:)=(/4, 5, 6/)
    v1=CSHIFT(v,-1,2)         !SHIFT=-1は右へ1
    v2=CSHIFT(v,(/-1,1/),2)   !-1は右へ1,1は左へ1
    WRITE(*,'(3I2)') (v1(i,:),i=1,2)
    WRITE(*,'(3I2)') (v2(i,:),i=1,2)
| 実行例 |