# Concat

## Concat(a, b, i, j, k)

Returns an array containing the elements of array «a» concatenated to the elements of array «b». Thus the number of items in the result is the sum of the number of items in «a» and the number of items in «b» . The parameter «i» is an index for array «a», «j» is an index for array «b» and «k» indexes the resulting array. The index parameters can be omitted if «a» and «b» are indexed implicitly, i.e. if they are single numbers or lists (1-D arrays), share an index or use local indexes.

When A and B are lists , `Concat(A, B)` returns a list consisting of their elements. This form is useful to concatenate (append, combine, join) two indexes to generate a third index.

When A and B are 1-D arrays with a common index `Concat([A], [B])` returns a 2-D array with two columns. Notice the square brackets around each variable. If only two parameters are used, column index is .K.

## Example

Let:

`Index In1 := ['a', 'b', 'c']`

Then:

`Concat(In1, ['z']) → ['a', 'b', 'c', 'z']`

## Optional Parameters

When A is an array with index I and B is an array with index J, `Concat(A, B, I, J)` concatenates (i.e., joins) arrays A and B, with the new result indexed by local index .K whose values are the concatenation of I and J.

Alternatively, you can provide the index K for the result, whose length must be the sum of the lengths of I and J: `Concat(A, B, I, J, K)`.

When using this five parameter form, the index values of I and J are ignored -- so it doesn't matter if the elements of K are also elements of I or J. All that matters is that the number of elements in K is the number of elements of I plus the number of elements in J. The positional ordering of the slices of each array are not altered -- the result consists of all the elements of A followed by all the elements of B.

## Details & More Examples

When A (or B) is implicitly indexed (for example, if it is a list or a single number), you can omit the index parameter. For example: `Concat(, B, , J)` prepends a column of zeroes to B.

### Example 1

Let:

`Index I := [1, 2];`
`Index J := ['a', 'b'];`
`Index K := Concat(J, 'c');`
`Variable A := Array(I, J, 1);`
`Variable B := Array(I, 2);`

Then:

`Concat(A, [B], J, , K) →`
K ▶
I ▼ 'a' 'b' 'c'
1 1 1 2
2 1 1 2

### Example 2

Let:

`Index Year1 := 2006 .. 2008`
`Index Years2 := 2009 .. 2010`
`Index YearsAll := Concat(Years1, Years2)`

Then:

`YearsAll → [2006, 2007, 2008, 2009, 2010]`