PACK
— Pack an array into an array of rank oneThe beginning of the resulting array is made up of elements whose MASK
equals TRUE
. Afterwards, positions are filled with elements taken from
VECTOR.
RESULT = PACK(ARRAY, MASK[,VECTOR])
ARRAY | Shall be an array of any type.
|
MASK | Shall be an array of type LOGICAL and
of the same size as ARRAY. Alternatively, it may be a LOGICAL
scalar.
|
VECTOR | (Optional) shall be an array of the same type
as ARRAY and of rank one. If present, the number of elements in
VECTOR shall be equal to or greater than the number of true elements
in MASK. If MASK is scalar, the number of elements in
VECTOR shall be equal to or greater than the number of elements in
ARRAY.
|
TRUE
values in MASK otherwise.
PROGRAM test_pack_1 INTEGER :: m(6) m = (/ 1, 0, 0, 0, 5, 0 /) WRITE(*, FMT="(6(I0, ' '))") pack(m, m /= 0) ! "1 5" END PROGRAM
Gathering nonzero elements from an array and appending elements from VECTOR:
PROGRAM test_pack_2 INTEGER :: m(4) m = (/ 1, 0, 0, 2 /) WRITE(*, FMT="(4(I0, ' '))") pack(m, m /= 0, (/ 0, 0, 3, 4 /)) ! "1 2 3 4" END PROGRAM