%ELEM (Get Number of Elements)
%ELEM(table_name)
%ELEM(array_name)
%ELEM(multiple_occurrence_data_structure_name)
%ELEM returns the number of elements in the specified array, table, or multiple-occurrence data structure. The value returned is in unsigned integer format (type U). It may be specified anywhere a numeric constant is allowed in the definition specification or in an expression in the extended factor 2 field.
The parameter must be the name of an array, table, or multiple occurrence data structure.
If the parameter is a complex-qualified name and the data structures
containing the required subfield are arrays, then the parameter may be specified in
one of two ways:
- With indexes specified for all of the data structure arrays in the complex qualified name.
- With indexes specified for none of the data structure arrays in the complex qualified name.
For more information, see Array Operations or Built-in Functions.
%ELEM Example with a Complex Data Structure
In the following example, the standard way to reference
the complex qualified subfield PET is
family(x).child(y).pet
When specified as the parameter for %ELEM, it can be specified either with no indexes specified for the data structure arrays, as in statement 1 or with all indexes specified for the data structure arrays, as in statement 2 .
DCL-DS family QUALIFIED DIM(3);
name VARCHAR(25);
numChildren INT(10);
DCL-DS child DIM(10);
name VARCHAR(25);
numPets INT(10);
pet VARCHAR(100) DIM(3);
END-DS;
END-DS;
DCL-S x INT(10);
x = %ELEM(family.child.pet); // 1
x = %ELEM(family(1).child(1).pet); // 2