Replicates an array in an additional dimension by making copies of existing elements along that dimension.

**SOURCE**- can be an array or scalar. It can have any data type. The rank of SOURCE has a maximum value of 19.
**DIM**- is an integer scalar in the range
1 <= DIM <= rank(SOURCE)+1. Unlike most other array
intrinsic functions,
**SPREAD**requires the DIM argument. **NCOPIES**- is an integer scalar. It becomes the extent of the extra dimension added to the result.

**Class**

Transformational function

**Result Type and Attributes**

The result is an array of rank rank(SOURCE)+1 and with the same type and type parameters as source.

**Result Value**

If SOURCE is a scalar, the result is a one-dimensional array with NCOPIES elements, each with value SOURCE.

If SOURCE is an array, the result is an array of rank rank(SOURCE) + 1. Along dimension DIM, each array element of the result is equal to the corresponding array element in SOURCE.

If NCOPIES is less than or equal to zero, the result is a zero-sized array.

**Examples**

```
! A is the array (/ -4.7, 6.1, 0.3 /)
RES = SPREAD( A, DIM = 1, NCOPIES = 3 )
! The result is | -4.7 6.1 0.3 |
! | -4.7 6.1 0.3 |
! | -4.7 6.1 0.3 |
! DIM=1 extends each column. Each element in RES(:,1)
! becomes a copy of A(1), each element in RES(:,2) becomes
! a copy of A(2), and so on.
RES = SPREAD( A, DIM = 2, NCOPIES = 3 )
! The result is | -4.7 -4.7 -4.7 |
! | 6.1 6.1 6.1 |
! | 0.3 0.3 0.3 |
! DIM=2 extends each row. Each element in RES(1,:)
! becomes a copy of A(1), each element in RES(2,:)
! becomes a copy of A(2), and so on.
RES = SPREAD( A, DIM = 2, NCOPIES = 0 )
! The result is (/ /) (a zero-sized array).
```