EOSHIFT |
書式 | EOSHIFT(ARRAY,SHIFT[,BOUNDARY][,DIM]) | ||||||||||||||||||||
機能 |
次元数が1である配列式上で要素の移動を行うか、
または次元数が2以上である配列式の指定された次元に
沿った1次元の部分配列のすべてにおいて要素の移動を行う。 部分配列の端から外にはみ出した要素は捨てられ、境界値BOUNDARYの 複製が反対側の端に取り込まれる。 それぞれの部分配列は、異なる境界値をもってもよく、 異なる方向に異なる量だけ移動してもよい。 関数名EOSHIFTは、END-OFF Shift(切り捨て移動)に基づいている。 結果の要素(s1,s2,…,sn)の値は、 ARRAY(s1,s2,…,sDIM-1, sDIM+sh,sDIM+1,…,sn)とする。 ここでshは、不等式 LBOUND(ARRAY,DIM)≦sDIM+SH≦UBOUND(ARRAY,DIM) を満たすとき SHIFTまたはSHIFT(s1,s2,…, sDIM-1,sDIM+1,…,sn) とし、満たさないときBOUNDARYまたは BOUNDARY(s1,s2,…, sDIM-1,sDIM+1,…,sn)とする。 nはARRAYの次元数とする。 | ||||||||||||||||||||
引数 |
| ||||||||||||||||||||
戻り値 | 型、種別型パラメタおよび形状は引数ARRAYと同じである。 |
┌───┬───┬───┐ v │ 1 │ 2 │ 3 │ ├───┼───┼───┤ │ 4 │ 5 │ 6 │ └───┴───┴───┘ ┌───┬───┬───┐ ┌───┬───┬───┐ v1│ 0 │ 0 │ 0 │ v2│999│ 1 │ 2 │ ├───┼───┼───┤ ├───┼───┼───┤ │ 1 │ 2 │ 3 │ │ 5 │ 6 │999│ └───┴───┴───┘ └───┴───┴───┘ INTEGER :: i INTEGER,DIMENSION(2,3) :: v,v1,v2 v(1,:)=(/1, 2, 3/) v(2,:)=(/4, 5, 6/) v1=EOSHIFT(v,-1) !BOUNDARYを省略しているので0 v2=EOSHIFT(v,(/-1,1/),999,2) !BOUNDARYは999 WRITE(*,'(6I4)') (v1(i,:),v2(i,:),i=1,2)
実行例 |