Copyright Digital Equipment Corp. All rights reserved.

EOSHIFT

 EOSHIFT (array, shift [,boundary] [,dim])

 Class:  Transformational function - Generic

 Performs an end-off shift on a rank-one array, or performs end-off
 shifts on all the complete rank-one sections along a given
 dimension of an array of rank two or greater.

 Elements are shifted off at one end of a section and copies of a
 boundary value are filled in at the other end.  Different sections
 can have different boundary values and can be shifted by different
 amounts and in different directions.

 The "array" can be of any type.

 The "shift" can be a scalar integer or an array with a rank that is
 one less than "array", and shape (d1, d2,..., d"dim"-1,
 d"dim"+1,..., dn), where (d1, d2,..., dn) is the shape of "array".

 The "boundary" must be of the same type and kind type parameter as
 "array".  It can be a scalar or an array with a shape that is one
 less than that of "array" and shape (d1, d2,..., d"dim"-1,
 d"dim"+1,..., dn).  If "boundary is omitted, it is assumed to have
 the following values:

   "array" type       "boundary" value
   ------------       ----------------
    integer            0
    real               0.0
    complex            (0.0, 0.0)
    logical            false
    character (len)    "len" blanks

 The "dim" must be a scalar integer with a value in the range 1 to
 n, where "n" is the rank of "array".  If omitted, it is assumed to
 be 1.

 The result is an array with the same type, kind type parameter, and
 shape as "array"

 The value of "shift" determines the amount and direction of the
 end-off shift.  A positive integer causes a shift to the left (in
 rows) or up (in columns).  If an element is shifted off the
 beginning of a vector, the "boundary" value is placed at the end of
 the vector.

 A negative integer causes a shift to the right (in rows) or down
 (in columns).  If an element is shifted off the end of a vector,
 the "boundary" value is placed at the beginning of the vector.

 Examples:

 Consider that V is the array (1, 2, 3, 4, 5, 6).

 EOSHIFT (V, SHIFT=2) shifts the array to the left by 2 positions,
 producing the value (3, 4, 5, 6, 0, 0).

 EOSHIFT (V, SHIFT= -3, BOUNDARY= 99) shifts the array to the right
 by 3 positions, and uses the boundary value of 99, producing the
 value (99, 99, 99, 1, 2, 3).

 Consider that M is the following array:

  |1 2 3|
  |4 5 6|
  |7 8 9|

 EOSHIFT (M, SHIFT = 1, BOUNDARY = '*', DIM=2) produces the result:

  |2 3 *|
  |5 6 *|
  |8 9 *|

 EOSHIFT (M, SHIFT = -1, DIM = 1) produces the result:

  |0 0 0|
  |1 2 3|
  |4 5 6|

 EOSHIFT (M, SHIFT = (/1, -1, 0/), BOUNDARY = (/ '*', '?', '/' /),
 DIM=2) produces the result:

  |2 3 *|
  |? 4 5|
  |7 8 9|