変形組込み関数 (総称):次元数 1 の配列に対して循環けた移動を実行します。次元数が 2 以上の配列に対しては,指定された次元に沿った 1 次元の部分配列のすべてにおいて要素の循環けた移動を行います。
部分配列の端から外にはみ出した要素は,反対側の端に送られます。それぞれの部分配列は,異なる方向に異なる量だけ移動することができます。
形式
result = CSHIFT (array, shift [, dim])
array
(入力) 配列。任意のデータ型を宣言できます。
shift
(入力) スカラ整数であるか,array よりも次元数が 1 だけ小さく,array の形状が (d1, d2, ..., dn) だとして,(d1, d2, ..., ddim-1, ddim+1, ..., dn) の形状を持つ配列。
dim
(省略可能,入力) 範囲 1 ~ n の値を持つスカラ整数。n は array の次元数です。dim を省略した場合,値 1 が使用されます。
結果
結果は,array と同じ型,種別パラメタ,および形状を持つ配列です。
array の次元数が 1 の場合,結果の要素 i は array (1 + MODULO (i + shift - 1, SIZE (array))) です (すべての要素に同じけた移動が適用されます)。
array の次元数が 1 よりも大きい場合,結果の各部分配列 (s1, s2, ..., sdim-1, :, sdim+1, ..., sn) は以下のように移動されます。
shift がスカラの場合,shift の値だけ移動されます。
shift が配列の場合,shift(s1, s2, ..., sdim-1, sdim+1, ..., sn) の対応する値だけ移動されます。
shift の値は,循環けた移動の量と方向を決定します。正の shift 値は,左 (行の場合) または上 (列の場合) へ移動します。負の shift 値は,右 (行の場合) または下 (列の場合) へ移動します。ゼロの shift 値は移動しません。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
V が配列 (1, 2, 3, 4, 5, 6) であるとします。
CSHIFT (V, SHIFT=2) は,V の中の要素を左に 2 だけ循環けた移動し,値 (3, 4, 5, 6, 1, 2) を生成します。1 と 2 は先頭の外にはみ出し,末尾に挿入されます。
CSHIFT (V, SHIFT=-2) は,V の中の要素を右に 2 だけ循環けた移動し,値 (5, 6, 1, 2, 3, 4) を生成します。5 と 6 は末尾の外にはみ出し,先頭に挿入されます。
M が配列
[ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ]
であるとします。
CSHIFT (M, SHIFT = 1, DIM = 2) は結果
[ 2 3 1 ] [ 5 6 4 ] [ 8 9 7 ]
を生成します。
行 1,2,および 3 の各要素は左に 2 だけ移動されます。先頭の外にはみ出された要素は末尾に挿入されます。
CSHIFT (M, SHIFT = -1, DIM = 1) は結果
[ 7 8 9 ] [ 1 2 3 ] [ 4 5 6 ]
を生成します。
列 1,2,および 3 の中の各要素は下に 1 だけ移動されます。末尾に移動された要素は先頭に挿入されます。
CSHIFT (M, SHIFT = (/1, -1, 0/), DIM = 2) は結果
[ 2 3 1 ] [ 6 4 5 ] [ 7 8 9 ]
を生成します。
行 1 の各要素は左に 1 だけ移動されます。行 2 の各要素は右に 1 だけ移動されます。行 3 の要素はまったく移動されません。
以下に他の例を示します。
INTEGER array (3, 3), AR1(3, 3), AR2 (3, 3) DATA array /1, 4, 7, 2, 5, 8, 3, 6, 9/ ! 配列は 1 2 3 ! 4 5 6 ! 7 8 9 です。 AR1 = CSHIFT(array, 1, DIM = 1) ! すべての列を 1 けた移動します。 ! その結果,以下のようになります。 ! 4 5 6 ! 7 8 9 ! 1 2 3 ! AR2=CSHIFT(array,shift=(/-1, 1, 0/),DIM=2) ! 指定したけた移動量で行を個別 ! にけた移動します。 ! その結果,以下のようになります。 ! 3 1 2 ! 5 6 4 ! 7 8 9