Описание записи с вариантной частью
В разделе var запись с вариантной частью описывают так:
var <имя_записи>: record <поле1>: <тип1>; [<поле2>: <тип2>;] [...] case <поле_переключатель>: <тип> of <варианты1>: (<поле3>: <тип3>; <поле4>: <тип4>; ...); <варианты2>: (<поле5>: <тип5>; <поле6>: <тип6>; ...); [...] end;
Невариантная часть записи (до ключевого слова case) подчиняется тем же правилам, что и обычная запись. Вообще говоря, невариантная часть может и вовсе отсутствовать.
Вариантная часть начинается зарезервированным словом case, после которого указывается то поле записи, которое в дальнейшем будет служить переключателем. Как и в случае обычного оператора case, переключатель обязан принадлежать к одному из перечислимых типов данных (см. лекцию 3). Список вариантов может быть константой, диапазоном или объединением нескольких констант или диапазонов. Набор полей, которые должны быть включены в структуру записи, если выполнился соответствующий вариант, заключается в круглые скобки.
Пример. Для того чтобы описать содержимое библиотеки, необходима следующая информация:
Автор Название Год издания Издательство |
Название Дата выхода (день, месяц, год) Издательство . |
Название Год и месяц издания Номер Издательство |
Графы "Название" и "Издательство" являются общими для всех трех вариантов, а остальные поля зависят от типа печатного издания. Для реализации этой структуры воспользуемся записью с вариантной частью:
type biblio = record name,publisher: string[20]; case item: char of 'b': (author: string[20]; year: 0..2004); 'n': (data: date); 'm': (year: 1700..2004; month: 1..12; number: integer); end;
В зависимости от значения поля item, в записи будет содержаться либо 4, либо 5, либо 6 полей.