UNIT ИмяМодуля;
INTERFACE ← начало раздела объявлений
USES { используемые при объявлениях модули: }
> Имя_Модуля1, Имя_Модуля2, ... ;
CONST Блок объявления библиотечных констант
TYPE Блок объявления библиотечных типов
VAR Блок объявления библиотечных переменных
> Заголовки библиотечных процедур и (или) функций
IMPLEMENTATION ← начало раздела реализации
USES { используемые при реализации модули:}
> Имя_Модуля101, Имя_Модуля202, ... ;
CONST Блок объявления внутренних констант
TYPE Блок объявления внутренних типов
VAR Блок объявления внутренних переменных
LABEL Блок описания меток блока инициализации
BEGIN
> Блок инициализации модуля
END.
Рис. 6.17
Модуль разделяется на четыре части:
— заголовок модуля (UNIT имя);
— раздел объявлений или интерфейс (INTERFACE);
— раздел реализации (IMPLEMENTATION);
— раздел инициализации (между BEGIN и END).
Все блоки, составляющие эти разделы (см. рис. 6.17), являются необязательными, и могут отсутствовать (как могут и появляться неоднократно). Обязательные слова, входящие в модуль, продемонстрированы на рис. 6.18, где показан пустой модуль.
- 126 -
UNIT Пустой;
INTERFACE
IMPLEMENTATION
END.
Рис. 6.18
Обращаем внимание на отсутствие точек с запятой после ключевых слов. Если не вводится раздел инициализации, то начинающее его слово BEGIN не ставится.
Заголовок модуля вводит имя, по которому модуль будет подключаться к другим программам. Имя должно быть уникальным (не иметь повторов внутри модуля) и соответствовать имени файла (с расширением .PAS) , хранящего исходный текст модуля (а после компиляции на диск имени файла с расширением .TPU).
Имя модуля как идентификатор имеет до 64 значащих символов. Но имя файла на диске не может превышать длину в восемь символов! Тем не менее имя модуля не обязательно ограничивать восемью символами. Пусть их будет больше, но при этом первые восемь должны совпадать с именем файла. А в основной программе в директиве USES должно стоять полное имя, как и в заголовке самого модуля.
Раздел объявлений, начинающийся словом INTERFACE, содержит описания типов, констант и переменных, которые будут привноситься в программу при подключении модуля. В нем же описываются заголовки процедур и функций, составляющих собственно библиотеку подпрограмм. В разделе обявлений указываются только заголовки, потому что информация о содержимом подпрограмм модуля не нужна на этапе компиляции, а используется только при компоновке программы. Исключение составляют процедуры с директивой inline (см. разд. 14.7.2). Они могут целиком задаваться в разделе объявлений. Недопустимы заголовки с директивами interrupt (см. разд. 16.6) и forward.