MODULE


Синтаксис

MODULE ModuleName [ [ ModuleAttributes ] ] ;

ModuleAttributes = ModuleAttributeName(ModuleAttributeValue)
                   { , ModuleAttributeName(ModuleAttributeValue) }
ModuleAttributeName = DEFAULTACCESSLEVELFORPROCEDURE | STATICEXPORTMODE

Описание

Оператор задает имя модуля; должен быть первым в модуле оператором или отсутствовать вообще. Имя модуля ModuleName должно регистронезависимо совпадать с именем файла. Оператор предназначен для головных модулей и статически подключаемых библиотек; в динамически подключаемых библиотеках недопустим. Оператор обязан присутствовать в модулях, содержащих перманентные переменные. Если оператор присутствует в модуле, он задает регистр имени модуля; во всех остальных применениях регистр имени модуля должен совпадать.

В квадратных скобках после имени модуля могут быть заданы атрибуты модуля. Атрибут DEFAULTACCESSLEVELFORPROCEDURE позволяет задать доступ по умолчанию к тем процедурам и функциям модуля, для которых уровень доступа не указан явно (опущен модификатор доступа перед словом PROCEDURE). Значение атрибута определяется модификаторами доступа PUBLIC и PRIVATE. В отсутствие атрибута процедуры и функции приватны по умолчанию для статически подключаемых библиотек, публичны в прочих случаях.

До версии 14.170.090 при вызове процедуры опциями CALL и CallBP, а также процедурным оператором CALL, модификаторы доступа к процедуре не учитывались. Начиная с версии 14.170.090 модификаторы учитываются, но только при наличии в модуле атрибута DEFAULTACCESSLEVELFORPROCEDURE и только для программиста в инженерной копии проекта.

До версии 14.175.030 при вызове процедуры опциями CALL и CallBP, а также процедурным оператором CALL, регистр имени модуля в тексте вызова не проверялся. Начиная с версии 14.175.030 регистр имени модуля проверяется, но только при наличии в модуле атрибута DEFAULTACCESSLEVELFORPROCEDURE и только для программиста в инженерной копии проекта. В случае несовпадения поднимается сообщение-предупреждение InvalidModuleNameInCall.

Атрибут STATICEXPORTMODE регулирует экспорт из модуля. Значение атрибута задается набором констант STATICEXPORTMODE. В режиме STATICEXPORTMODE_ASLIBRARY из модуля экспортируются все публичные типы, константы, переменные и процедуры; соответственно, если модуль является головным, его нельзя импортировать, если является библиотечным, его нельзя вызвать при помощи оператора CALL. Режим STATICEXPORTMODE_ASLIBRARY действует по умолчанию. В режиме STATICEXPORTMODE_ASMAINMODULE из модуля экспортируются только публичные типы и константы, соответственно, оба ограничения снимаются. Если модуль является головным, его можно импортировать, если является библиотечным, - можно вызвать при помощи оператора CALL.