### Set Definitions

A Set Definition is defined as any Definition whose expression is a set of values, defined within square brackets. Constant sets are created as a set of explicitly declared constant values that must be declared within square brackets, whether that set is defined as a separate definition or simply included in-line in another expression. All the constants must be of the same type.

```SetInts  := [1,2,3,4,5]; // an INTEGER set with 5 elements
SetReals := [1.5,2.0,3.3,4.2,5.0];
// a REAL set with 5 elements
SetStatusCodes := ['A','B','C','D','E'];
// a STRING set with 5 elements```

The elements in any explicitly declared set can also be composed of arbitrary expressions. All the expressions must result in the same type and must be constant expressions.

```SetExp := [1,2+3,45,SomeIntegerDefinition,7*3];
// an INTEGER set with 5 elements```

Declared Sets can contain definitions and expressions as well as constants as long as all the elements are of the same result type. For example:

```StateCapitol(STRING2 state) :=
CASE(state, 'FL' => 'Tallahassee', 'Unknown');
SetFloridaCities := ['Orlando', StateCapitol('FL'), 'Boca '+'Raton',
person[1].per_full_city];```

Set Definitions can also be defined using the SET function (which see). Sets defined this way may be used like any other set.

```SetSomeField := SET(SomeFile, SomeField);
// a set of SomeField values```

Sets can also contain datasets for use with those functions (such as: MERGE, JOIN, MERGEJOIN, or GRAPH) that require sets of datsets as input parameters.

`SetDS := [ds1, ds2, ds3]; // a set of datasets`

You can construct a DATASET from a SET.

```SET OF STRING s := ['Jim','Bob','Richard','Tom'];
DATASET(s,{STRING txt});```