3.9. РАЗДЕЛЫ ОПИСАНИЙ

Раздел описаний содержит элементы описания (возможно, и ни одного).

раздел-описаний ::= {основной-элемент-описания}    {дополнительный - элемент - описания}основной-элемент-описания ::= основное-описание    | спецификатор-представления | спецификатор-использованиядополнительный-элемент-описания ::= тело    | описание-подпрограммы         | описание-пакета     | описание-задачи               | описание-настройки     | спецификатор-использования    | конкретизация-настройкитело ::= соответствующее-тело | след-тела соответствующее-тело ::= тело-подпрограммы | тело-пакета | тело-задачи

Предвыполнение раздела описаний состоит из предвыполнения элементов описания, если они есть, в порядке их следования в разделе описаний. После своего предвыполнения элемент описания называется предвыпопненным. До окончания своего предвыполнения (включая фазу перед предвыполнением) элемент описания еще не предвыполнен.

Для нескольких форм элементов описания правила языка (в частности, правило определения области действия и правила видимости) таковы, что использование понятия до предвыполнения элемента описания, который объявляет это понятие, либо невозможно, либо является неправильным. Например, невозможно использование имени типа для описания объекта, если соответствующее описание типа еще не предвыполнено. В случае тел осуществляются следующие проверки:

• При вызове подпрограммы проверяется, предвыполнено ли уже тело подпрограммы.

• При активизации задачи проверяется, предвыполнено ли уже тело соответствующего за-дачного модуля.

• При конкретизации настраиваемого модуля, имеющего тело, проверяется, предвыполнено ли уже тело настраиваемого модуля.

Если одна из этих проверок дает отрицательный результат, возбуждается исключение PROGRAM_ERROR.

Если описание подпрограммы, описание пакета, описание задачи или описание настраиваемого понятия являются элементами описания данного раздела описаний, то тело (если оно существует) программного модуля, описанного элементом описания, должно само быть элементом описания этого раздела описаний (и должно помещаться ниже). Если тело представлено следом тела, то для этого программного модуля необходим раздельно компилируемый субмодуль, содержащий соответствующее тело (см. 10.2).

Ссылки: активизация 9.3, видимость 8.3, вызов подпрограммы 6.4, исключение PROGRAM_ERROR 11.1, конкретизация 12.3, область действия 8.2, тип 3.3.

Предвыполнение описаний: 3.1, конкретизация настройки 12.3, неполное описание типа 3.8.1, описание входа 9.5, описание задачи 9.1, описание компоненты 3.7, описание личного типа 7.4.1, описание настройки 12.1, описание объекта 3.2.1, описание пакета 7.2, описание переименования 8.5, описание подпрограммы 6.1, описание подтипа 3.3.2, описание субкон-станты 7.4.3, описание типа 3.3.1, описание числа 3.2.2, спецификация дискриминанта 3.7.1, спецификация литерала перечисления 3.5.1, спецификация параметра 6.1, спецификация параметра цикла 5.5.

Предвыполнение определений типа: 3.3.1, определение вещественного типа 3.5.6, определение именуемого типа 3.7, определение индексируемого типа 3.6, определение перечислимого типа 3.5.1, определение производного типа 3.4, определение ссылочного типа 3.8, определение целого типа 3.5.4.

Предвыполнение других конструкций: библиотечный модуль 10.5, задача 9.2, компилируемый модуль 10.1, настраиваемое тело 12.2, раздел дискриминантов 3.7.1, след тела 10.2, спецификатор использования 8.4, спецификатор контекста 10.1, спецификатор представления 13.1, спецификатор совместности 10.1.1, спецификация задачи 9.1, субмодуль 10.2, тело задачи 9.1, тело пакета 7.1, тело подпрограммы 6.3, формальный параметр настройки 12.1, 12.3.