A set structure defines the set of values that is the powerset of its base type, i.e., the set of all subsets of values of the base type. The base type must be an ordinal type, and will usually be an enumerated type, Char, or a subrange of Integer. Components (members) of sets are not directly accessed, but the set operations (including the membership operator) and a set-value constructor allow creation and manipulation of entire sets. 

A file structure describes a sequence of components of the same type. A natural ordering of the components is defined through the sequence. At any instant, only one component is directly accessible, and it may be either inspected or generated but not both. The other components are accessed by progressing sequentially through the file. A file is generated by sequentially appending components at its end. Consequently, the file type description does not determine the number of components. 

A variable declaration associates an identifier with a type, and when the block (see below) in which the declaration occurs is activated, a variable that is named by the identifier is created. Such variables that are declared in explicit declarations are sometimes called static. In contrast, variables may be generated by executable statement; such a dynamic generation yields a so-called pointer (a substitute for an explicit identifier) which subsequently serves to identify the variable. This pointer value may be assigned to variables and functions that possess its type. Each pointer type has a fixed domain type, and every variable identified by a pointer value of the pointer type possesses the domain type. In addition to such identifying values, each pointer type also has the value nil which points to no variable. Because components of structured variables may possess pointer types, and the domain type of pointer types may be structured, the use of pointers permits the representation of finite graphs in full generality. 

The most fundamental statement is the assignment statement. It specifies that a value obtained by evaluating an expression be assigned to a variable (or component thereof). Expressions consist of variables, constants, array-parameter index bounds, set constructors, and operators and functions operating on the denoted quantities yielding result values. Variables, constants, and functions are either declared in 

