ГОСТ Р И С 010303-11 — 2009
мых экземпляров. Как правило, созданный таким образом экземпляр недоступен вне создающей его фун
кции и. в частности, не является частью рассматриваемой совокупности экземпляров. Исключением явля
ется случай, когда такой экземпляр возвращается в качестве результата или в составе результата вызова
функции. В данном случае экземпляр остается доступным в точке вызова функции. Если экземпляр воз
вращается подобным образом на уровень схемы (то есть как значение вычисляемого атрибута или кон
станты). он рассматривается как часть общей совокупности экземпляров.
Синтаксис:
219function_call = ( built_in_function | function_ref)
( actual_parameter_list ].
167actual_parameter_list = ’(‘ parameterparameter )
264 parameter = expression .
Ограничение: передаваемые фактические параметрыдолжны бытьсовместимы по назначению сфор
мальными параметрами.
Пример— Пример использования вызова функции:
ENTITY point
х. у, z : number:
END_ENTFTY:
FUNCTION midpoint_ofjine(i:line):point;
END_FUNCTION;
IF midpoint_of_line(L506).x= 9.0 THEN ...
— применяя оператор ссылки на атрибут
— непосредственно к результату функции
ENDJF;
12.9 Инициализатор агрегированных структур
Инициализатор агрегированных структур используется, чтобы установить значение типа
AGGREGATE OF GENERIC,
которое может быть задано массиву, пакету, списку или набору. В
квадратных скобках может быть не заключено ни одного или заключено несколько выражений, представ
ляющих значения, принадлежащие к типуданных, совместимому с базисным типом данных агрегирован
ной структуры. При наличии двух или более значений, они должны разделяться запятыми. Разреженный
массив может быть инициализирован посредством использования неопределенности (?) вместо отсутству
ющих символов. Результатом выражения инициализатора агрегированной структуры является агрегиро
ванное значение, содержащее значения, определенные как его элементы. Число инициализированных
элементов должно соответствовать границам, заданным для данного агрегированного типаданных.
Инициализатор агрегированной структуры, не содержащий ни одного элемента, устанавливает пус
той пакет, список или набор (данная конструкция не может быть использована для инициализации пустых
массивов).
Синтаксис:
169aggregatejnitializer = ’[’(elem ent {’.’e le m e n t}]’]’ .
203element = expression [’:’ repetition],
287 repetition = numeric_expression.
Пример— Задано объявление:
a : SET OF INTEGER;
его значение может быть задано следующим образом:
а := [1. 3. 6. 9*8, -1 2 ]; — 9*8 является выражением со значением 72
Если несколько последовательных значений является одинаковыми, то может быть использовано
выражение повторения, которое представляетсядвумя выражениями, разделенными символом двоето
чия (:). Выражение слева от двоеточия представляет значение, которое должно повторяться. Выражение
справа отдвоеточия задает число повторений левого значение. Данное выражение вычисляется один раз,
перед инициализацией, идолжно иметь неотрицательное целочисленное значение.
Пример— Задано следующее объявление:
а : BAG OF BOOLEAN;
Следующие два оператора эквивалентны:
а := [TRUE : 5];
а := [TRUE. TRUE. TRUE. TRUE. TRUE];
89