INTEGER | CARDINAL | BOOLEAN | CHAR (* built-in *) | "{" id "," id "," ... "}" (* enumerated *) | "[" lo..hi "]" (* subrange *)
Ordinal types denote sets of values in each of which has a unique successor.
INTEGER
The set of signed integers (positive and negative).
CARDINAL
A synonym for the subrange [0..LAST(INTEGER)]
BOOLEAN
The enumeration {FALSE, TRUE}
CHAR
The set of ISO-Latin-1 characters (an extension of ASCII)
Enumerated
An enumerated type is an ordered set of values whose names are specified by the user, as follows:
TYPE Day = {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
Values of an enumeration are specified as type-name.value, for example, Day.Sunday rather than just Sunday. Thus, you should keep enumeration type names short.
Subrange
A subrange is a subset of the values of the base type specified by the range lo..hi. Values lo and hi must have the same ordinal type. Integer subranges are the most common:
TYPE Digit = [0 .. 9]; (* subrange of INTEGER *) WeekDay = [Day.Monday .. Day.Friday]; (* subrange of Day *)