PACK (array, mask [,vector])
Class: Transformational function - Generic
Takes elements from an array and packs them into a rank-one array
under the control of a mask.
The "mask" must be of logical type and conformable with "array".
The "vector" must be a rank-one array with the same type and type
parameters as "array". Its size must be at least t, where "t" is
the number of true elements in "mask". If "mask" is a scalar with
value true, "vector" must have at least as many elements as there
are in "array".
Elements in "vector" are used to fill out the result array if there
are not enough elements selected by "mask."
The result is a rank-one array with the same type and type
parameters as "array". If "vector" is present, the size of the
result is that of "vector". Otherwise, the size of the result is
the number of true elements in "mask", or the number of elements in
"array" (if "mask" is a scalar with value true).
Elements in "array" are processed in array element order to form
the result array. Element i of the result is the element of
"array" that corresponds to the ith true element of "mask".
If "vector" is present and has more elements than there are true
values in "mask", any result elements that are empty (because they
were not true according to "mask") are set to the corresponding
values in "vector".
Examples:
Consider that N is the array |0 8 0|.
|0 0 0|
|7 0 0|
PACK (N, MASK=N .NE. 0, VECTOR= (/1, 3, 5, 9, 11, 13/) produces
the result (7, 8, 5, 9, 11, 13).
PACK (N, MASK=N .NE. 0) produces the result (7, 8).