ГОСТ Р И С 0 10303-11 — 2009
Если G является обобщенным массивом, то А должно быть типом данных ARRAY. Если для G задан
диапазон индексов, тодиапазон индексов А должен быть таким же.
Если G является обобщенным пакетом, то А должно быть типом данных BAG. Если для G заданы
границы, то границы А должны быть такими же.
Если G является обобщенным списком, то А должно быть типом данных LIST. Если для G заданы
границы, то границы А должны быть такими же.
Если G является обобщенным набором, то А должно быть типом данных SET. Если для G заданы
границы, то границы А должны быть такими же.
Если G является любым обобщенным типом данных, то ЕА должно соответствовать EG. как опреде
лено в 9.5.
Если EG не является обобщенным типом данных, то ЕА должно быть присваиванием, совместимым
с EG. как определено в 13.3.
Пример — В данном примере показано, как набор (тип данных SET) может быть описан а
объявлении формального параметра. Он не может быть описан в объявлении атрибута, поскольку
базисный тип данных для SET не включает тип данных GENERIC.
FUNCTION dimensions(input: SET (2:3] OF GENERIC):INTEGER;
9.5.4 Локальные переменные
Переменные, локальные по отношению кданному алгоритму, объявляются после ключевого слова
LOCAL. Локальная переменная видима только в области видимости алгоритма, в котором она объявлена.
Локальным переменным могут быть присвоены значения, и они могут присутствовать в выражениях.
Синтаксис:
252 local_decl = LOCAL local_variable { local_variable} END_LOCAL’ .
253 local_variable = variablejdvariablejd)param eter_type
(expression ].
266 parameter_type = generalizedjypes | namedjypes | simple_types.
Инициализация локальных переменных:
Локальная переменная может появиться при инициализации другой зависимой локальной перемен
ной. Объявление зависимых локальных переменныхдолжно бытьациклическим. Если никакого начально
го значения не задано, толокальной переменной присваивается неопределенное (?) значение.
П р и м е ч а н и я
1 Требование ацикличности объявлений локальных переменных необходимо, чтобы всегда обеспечи
вать существование допустимого начального значения, присваиваемого в порядке следования объявления.
2 Поскольку неопределенное (?) значение совместимо со всеми типами данных, то допустима явная
инициализация с неопределенным (?) значением.
Пример — Переменная r_result инициализируется со значением 0.0:
LOCAL
r_result : REAL :=0.0;
i_result : NTEGER;
ENDLOCAL;
EXISTS(r_result) —
EXISTS(i_result) —
TRUE
FALSE поскольку никакого значения не присвоено
9.6 Правило
Правила позволяют определить ограничения, применяемые к одному или нескольким типам данных
в пределах области видимости схемы. Локальные правила (к которым относятся ограничения уникаль
ности и правила области видимости вобъявлении объектов) объявляют ограничения, применяемые инди
видуально к каждому экземпляру объектного типа данных. Объявление RULE позволяет определить
ограничения, применяемые в совокупности ко всей области определения объектного типа данных
или кэкземплярам нескольких объектных типов данных. Одним из применений объявления RULE
являет ся скоординированное ограничение значений атрибутов разных объектов.
В объявлении правила ему присваивается имя и указываются объекты, на которые оно
распространяется.
Тело правила состоит излокальных объявлений, исполняемых операторов и правил области опре
деления. Конечное состояние правила показывает, удовлетворяется или нет некоторое глобальное
53