An entire array or individual elements in an array can be specified
in calculation specifications. You can process individual elements
like fields.
A noncontiguous array defined with the OVERLAY keyword cannot be
used with the MOVEA operation or in the result field of a PARM operation.
To specify an entire array, use only the array name, which can
be used as factor 1, factor 2, or the result field. The following
operations can be used with an array name: ADD, Z-ADD, SUB, Z-SUB,
MULT, DIV, SQRT, ADDDUR, SUBDUR, EVAL, EXTRCT, MOVE, MOVEL, MOVEA,
MLLZO, MLHZO, MHLZO, MHHZO, DEBUG, XFOOT, LOOKUP, SORTA, PARM, DEFINE,
CLEAR, RESET, CHECK, CHECKR, and SCAN.
Several other operations can be used with an array element only
but not with the array name alone. These operations include but are
not limited to: BITON, BITOFF, COMP, CABxx, TESTZ, TESTN, TESTB, MVR,
DO, DOUxx, DOWxx, DOU, DOW, IFxx, WHENxx, WHEN, IF, SUBST, and CAT.
When specified with an array name without an index or with an asterisk
as the index (for example, ARRAY or ARRAY(*)) certain operations are
repeated for each element in the array. These are ADD, Z-ADD, EVAL,
SUB, Z-SUB, ADDDUR, SUBDUR, EXTRCT, MULT, DIV, SQRT, MOVE, MOVEL,
MLLZO, MLHZO, MHLZO and MHHZO. The following rules apply to these
operations when an array name without an index is specified:
- When factors 1 and 2 and the result field are arrays with the
same number of elements, the operation uses the first element from
every array, then the second element from every array until all elements
in the arrays are processed. If the arrays do not have the same number
of entries, the operation ends when the last element of the array
with the fewest elements has been processed. When factor 1 is not
specified for the ADD, SUB, MULT, and DIV operations, factor 1 is
assumed to be the same as the result field.
- When one of the factors is a field, a literal, or a figurative
constant and the other factor and the result field are arrays, the
operation is done once for every element in the shorter array. The
same field, literal, or figurative constant is used in all of the
operations.
- The result field must always be an array.
- If an operation code uses factor 2 only (for example, Z-ADD, Z-SUB,
SQRT, ADD, SUB, MULT, or DIV may not have factor 1 specified) and
the result field is an array, the operation is done once for every
element in the array. The same field or constant is used in all of
the operations if factor 2 is not an array.
- Resulting indicators (positions 71 through 76) cannot be used
because of the number of operations being processed.
- In an EVAL expression, if any arrays on the right-hand side are
specified without an index, the left-hand side must also contain an
array without an index.
When coding an EVAL or a SORTA operation, built-in function
%SUBARR(arr) can be used to select a portion of the array to be used
in the operation. See %SUBARR (Set/Get Portion of an Array) for more
detail.