Здесь Z -переменная типа V; N - переменная, называемая переключателем TYPEN - тип переменной N.
Этому же типу должны принадлежать метки С1,С2,...СК. Каждой метке соответствует набор полей T11, Т12,... Эти поля являются компонентами варианта.
Переменную N называют также шагом (тэгом), ярлыком, признаком, дискриминантом.
Если какой-либо метке CL вообще не соответствуют поля, то пишут CL:( );
Замечания.
1. Любая запись (RECORD) может иметь только одну вариантную часть (CASE).
2. Вариантная часть должна помещаться после постоянной части.
3. Среди идентификаторов полей не должно быть одинаковых. Обращение к компоненте Z.Tij записи Z происходит так:
1) Присваивается соответствующее значение (Ci) переключателю N. В зависимости от значения N переменная Z, помимо полей А,В,..., содержит те поля, которые соответствуют той метке Ci, с какой совпадает значение N.
2) Выполняется операция с компонентой Z.Tij.
Пример записи с вариантами. Пусть необходимо собрать следующие сведения о сотрудниках института: фамилию, дату рождения и, если есть семья, то фамилию и дату рождения супруги (супруга).
Эта информация может быть описана, например, записью PERSON.
Пусть переменная типа KIND может иметь одно из значений ("женат", "холост").
Здесь NAME - строка символов (например, 'ROGOV^'); DATE- BIRTH - запись, описанная выше, содержит дату рождения (например, 15.02.62); YESNO - переключатель типа KIND, который может принимать одно из двух значений: MARRIED либо SINGLE; NAME1 - строка символов, содержащая фамилию супруги (супруга) (например, 'ROGOVA'); DATE1 - запись, содержащая дату рождения супруги (супруга). SINGLE - пустое поле.
Если ROGOV женат, то присутствует поле MARRIED, если холост - поле SINGLE, а поле MARRIED отсутствует. Паскаль допускает вложение вариантов в типе RECORD.
Пример. Пусть необходимо, помимо информации предыдущего примера, иметь о сотрудниках следующие сведения: если сотрудник холост, но состоял в браке раньше, то указать, когда разведен.
Опишем тип KIND как (женат, холост, разведен, нет):
Тогда
Здесь для варианта SINGLE имеется вложенная запись с вариантами DEVORCED (разведен) и NO.
Если сотрудник состоит в браке, то в записях информации отсутствует поле SINGLE; если разведен, то отсутствует MARRIED; если в браке не состоял, то запись содержит лишь поле NAME, DATEBIRTH и пустое поле NO.
Замечание. Перед засылкой информации в запись программист должен присвоить переключателю соответствующее значение. В противном случае информация (например, MARRIED) в поле заслана не будет, и система никакой диагностики не выдаст.
Пример засылки информации о сотруднике РОГОВЕ, родившемся 1.12.32, женатом на РОГОВОЙ, родившейся 15.3.30 (ЭВМ БЭСМ-6).
Более сложная программа, иллюстрирующая работу с переменными типа "запись", приведена в приложении.