Cтраница 2
Список значений изменяет правила выполнения оператора процедуры. В этом случае процедура как бы охватывается внешним блоком, в котором описываются идентификаторы формальных параметров, включенные в список значений, и происходит присваивание им значений фактических параметров. Такое присваивание производится однажды перед входом в описание процедуры. [16]
Для представления в промежуточной форме фактических параметров операторов вызова процедур введем операцию ФАКТИЧЕСКИЙ ПАРАМЕТР ( ФАП), операндами которой являются имя вызываемой процедуры и идентификаторы передаваемых фактических параметров, а для представления формальных параметров в операторах процедур - операцию ФОРМАЛЬНЫЙ ПАРАМЕТР ( ФОП), аргументами которой служат ключевое слово PROCEDURE и идентификаторы формальных параметров. [17]
Описание служит для задания процедуры, связанной с идентификатором последней. Главной составной частью описания процедуры является оператор или LIBRARY ( строка), называемые телом процедуры, к которому может быть произведено обращение посредством указателей функций и ( или) операторов процедуры из других мест блока, в начале которого находится описание данной процедуры. С телом процедуры связан заголовок, который указывает, что некоторые идентификаторы, встречающиеся в теле процедуры, представляют собой формальные параметры. В момент обращения к процедуре ( см. разд. Если идентификатор формального параметра заново локализован внутри тела процедуры ( как это указано в разд. [18]
Ранее оттранслированная процедура определяется так же, как и процедура, описанная в конкретной программе. Это описание начинается одним из описателей PROCEDURE или ТИП PROCEDURE, за которым следуют заголовок процедуры и тело процедуры. Тело процедуры может быть оператором, составным оператором или блоком. Описание такой процедуры не должно заключаться в операторные скобки. Каждая ранее оттранслированная процедура, к которой обращается программа, должна иметь единственный идентификатор процедуры. Идентификаторы, которые содержатся в теле такой процедуры, могут быть либо идентификаторами формальных параметров, задаваемых в заголовке процедуры, либо идентификаторами, локализованными в теле процедуры, либо идентификаторами стандартных процедур. [19]
Описание процедуры служит для задания процедуры, связанной с идентификатором процедуры. Главной составной частью описания процедуры является оператор или группа кодов, называемые телом процедуры, к которому может быть произведено обращение посредством указателей функций и ( или) операторов процедуры из других мест блока, в заголовке которого находится описание данной процедуры. С телом процедуры связан ее заголовок, который указывает, что некоторые идентификаторы, встречающиеся в теле процедуры, представляют формальные параметры. В момент обращения к процедуре ( см. разд. Указатели функций и разд. Операторы процедур) формальным параметрам в теле процедуры будут присвоены значения фактических параметров или же они будут заменены фактическими параметрами. Те идентификаторы в теле процедуры, которые не являются формальными параметрами, являются либо локальными, либо не локальными в теле в зависимости от того, описаны они в теле процедуры или нет. Те из них, которые не локальны в теле процедуры, могут быть локальными в блоке, в заголовке которого находится описание данной процедуры. Тело процедуры всегда действует подобно блоку независимо от того, имеет оно форму блока или нет. Следовательно, область действия метки, помечающей оператор внутри тела или само тело, никогда не может распространяться за тело процедуры. Кроме того, если идентификатор формального параметра заново описан внутри тела процедуры ( включая случай использования его в качестве метки, как это указано в разд. [20]