1. Home
2. VEQUATE procedure

# VEQUATE procedure

Equates values across a set of data structures (P.W. Goedhart).

### Parameters

`OLDSTRUCTURES` = pointers Structures whose values are to be transferred – each pointer should contain a set of structures with the same length and type (either scalar, variate, matrix, diagonal matrix, symmetric matrix, table, text or pointer) Structures to contain the transferred values – each pointer contains a set of either variates, texts or pointers, as relevant to the type of the `OLDSTRUCTURES`

### Description

`VEQUATE` allows the values in a set of structures to be copied into another set of structures, one for each element of the original structures. The original structures are input in a pointer, using the `OLDSTRUCTURES` parameter. They must all be of the same type (scalar, variate, matrix, diagonal matrix, symmetric matrix, table, text or pointer), and have the same number of values.

The structures to take the values are returned in a pointer, whose identifier is specified by the `NEWSTRUCTURES` parameter. The values in the first element of each of the original structures are copied into the first structure in the `NEWSTRUCTURES` pointer, then those in the second element are copied into the second structure, and so on. If the old structures contain numbers, the new structures will be variates. If they are texts, the new structures will be texts. Finally, if they are pointers, the new structures will be pointers. If `NEWSTRUCTURES` has already been declared, it should be to a pointer of the correct length. The structures to which it points will be redefined, if necessary, to have the correct length.

Options: none.

Parameters: `OLDSTRUCTURES`, `NEWSTRUCTURES`.

### Method

`EQUATE` is used to transfer values. If `OLDSTRUCTURES` points to restricted variates or texts, the values included in the subset are first copied to dummy structures.

### Action with `RESTRICT`

If the `OLDSTRUCTURES` pointer consists of variates or texts, any restrictions will be taken into account and, if the `NEWSTRUCTURES` pointer is not declared in advance, its suffixes will be set to the units in the restricted set.

Directive: `EQUATE`.

Procedures: `APPEND`, `STACK`.

Commands for: Calculations and manipulation.

### Example

```CAPTION  'VEQUATE example',\
'The first example equates variates.',\
'The second example equates restricted variates.',\
'The third example equates symmetric matrices.';\
STYLE=meta,3(plain)
VARIATE  [NVALUES=5] oldvari[1...3] ; !(1...5), !(11...15), !(21...25)
VEQUATE  OLDSTRUCTURES=oldvari; NEWSTRUCTURES=newvari
PRINT    oldvari[]; DECIMALS=0
PRINT    newvari[]; DECIMALS=0

RESTRICT oldvari[]; CONDITION=!(1,0,0,1,1)
VEQUATE  OLDSTRUCTURES=oldvari; NEWSTRUCTURES=restvari
PRINT    restvari[]; DECIMALS=0

SYMMETRIC [ROWS=3] oldsymm[1...2]; VALUES=!(1...6),!(101...106)
VEQUATE   oldsymm; !P(first,second,third,fourth,fifth,sixth)
PRINT     [SERIAL=yes] oldsymm[]; DECIMALS=0
PRINT     first,second,third,fourth,fifth,sixth; DECIMALS=0
```
Updated on March 4, 2019