В программу можно ввести и переменные какого-либо типа, не совпадающего ни с одним из стандартных. Такой тип задается перечислением значений, которые может принимать переменная.
Общий вид описания нестандартного типа:
здесь NM - идентификатор типа (произвольный идентификатор), W0RD1, WORD2...- конкретные значения, которые может принимать переменная типа NM. Эти значения считаются упорядоченными, т. е. описание типа одновременно вводит упорядочение
Пример 1. TYPE COLOR=(RED, YELLOW, GREEN, BLUE);
Здесь определено, что
Переменная типа COLOR может принимать одно из перечисленных значений.
Ко всем переменным скалярного типа, кроме REAL, применимы следующие стандартные функции: SUCC(X), PRED(X), ORD(X).
Функция SUCC(X. По элементу X определяется та упорядоченная последовательность, которой принадлежит X, и выдается элемент, следующий за X в этой последовательности.
Пример 2. Пусть задана последовательность букв в алфавитном порядке. Тогда SUCC(A) есть В; SUCC(L) есть М и т. д. В примере 1 SUCC(RED) есть YELLOW.
Функция PRED(X). По элементу X определяется последовательность, которой принадлежит X, и выдается предыдущий элемент этой последовательности.
Пример 3. PRED(F) есть Е; PRED(Z) есть Y и т. д.
Функция ORD(X). Выдается номер элемента X из соответствующей последовательности.
Пример 4. Если заданная последовательность есть латинский алфавит, то ORD(A) есть 0; ORD(C) есть 2. (Нумерация начинается с нуля).
Ко всем переменным одного и того же скалярного типа применимы операции отношения