Wherever assignment-compatibility is required, and Tl and T2 are either compatible ordinal types or compatible set types, it is an error if the value is not a member of the set of values determined by T 1. 

## 7. Variables 

A variable possesses a type that is determined by its declaration, and may take on values only of that type. 

A variable is undefined if it does not have a value of its type. A variable is totally undefined if it is undefined and further if every component of the (structured) variable is totally undefined. When a variable is created it is totally undefined. A variable declared in a block is created when the block is activated and destroyed when the activation is terminated (see Section 10). An identified variable is created or destroyed, respectively, by the predeclared procedure New or Dispose (see Sections 6.3 and 11.4). 

A variable declaration introduces one or more variable identifiers and the type that each one possesses. Variable declarations are collected into variable declaration parts. 

VariahleDeclarationPart = [ "var" VariahleDeclaration "; " { VariahleDeclaration "; " } 1 . VariahleDeclaration = IdentifierList .. : " Type. Variahleldentifier = Identifier. 

Example of a variable declaration part: 

var W, X, Y: Real; Z: Complex; I, J: Integer; K: 0 .. 9; P, Q: Boolean; Operator: (Plus, Minus, Times); GrayScale: array [0 .. 63] of Real; VideoPotential: array [Color, Boolean] of Complex; Light: Color; F: file of Char; Huel, Hue2: set of Hue; PI, P2: PersonPointer; 

