The GNU Fortran Compiler: UNPACK

Next: VERIFY, Previous: UNLINK, Up: Intrinsic Procedures [Contents][Index]

### 9.269 `UNPACK` — Unpack an array of rank one into an array

Description:

  Store the elements of VECTOR in an array of higher rank.

Standard:

  Fortran 95 and later

Class:

  Transformational function

Syntax:

  `RESULT = UNPACK(VECTOR, MASK, FIELD)`

Arguments:

  VECTOR | Shall be an array of any type and rank one. It shall have at least as many elements as MASK has `TRUE` values.
  MASK | Shall be an array of type `LOGICAL`.
  FIELD | Shall be of the same type as VECTOR and have the same shape as MASK.

Return value:

  The resulting array corresponds to FIELD with `TRUE` elements of MASK replaced by values from VECTOR in array element order.

Example:

      PROGRAM test_unpack
        integer :: vector(2)  = (/1,1/)
        logical :: mask(4)  = (/ .TRUE., .FALSE., .FALSE., .TRUE. /)
        integer :: field(2,2) = 0, unity(2,2)

        ! result: unity matrix
        unity = unpack(vector, reshape(mask, (/2,2/)), field)
      END PROGRAM

See also:

  PACK, SPREAD