ГОСТ Р И С 010303-11 — 2009
- если результат выражения, расположенного слева от квалификатора элемента, принадле
жит ктипу данных
LIST
и выполняется
{1<=index_1<=SlZEOF(left)>.
то выражение, расположен
ное справа от оператора присваивания, заменяет в списке элемент, расположенный на данной
позиции, если только объект, которому присваивается значение, не уточняется; в последнем слу
чае используется данное дальнейшее уточнение,
- если результат выражения, расположенного слева от квалификатора элемента, принадле
жит к типуданных
STRING
и выполняется
{1<=lndex_1<=LENGTH(left)},
то выражение, располо
женное справа от оператора присваивания, заменяет в строке символ, расположенный на данной
позиции;
4) уточнениедиапазоном;
- объявленный тип выражения, расположенного слева от квалификатора диапазона,должен
быть
BINARY
или
STRING
либо выбираемым типом данных, определенным с использованием
одного из указанных типовданных. Параметры
index_1
и
index_2
должны иметь целочисленное
значение.
- выражение, расположенное слева от квалификатора диапазона, должно быть инициа
лизировано. то есть иметь значение до того, как его элементам могут быть присвоены значения.
- если результат выражения, расположенного слева от квалификатора диапазона, принадле
жит ктипуданных
BINARY
и выполняется
{1<=indox_1<=indox_2}AND (index_2<=BLENGTH (left)),
то выражение, расположенное справа от оператора присваивания замещает элементы, располо
женные в исходном двоичном числе между позициями
index_1
и
index_2.
П р и м е ч а н и е — Если BLENGTH(right)<>(index_2-index_1+1). то данным присваиванием
будет заменен элемент BLENGTH(left).
- если результат выражения, расположенногослева от квалификатора диапазона, принадле
жит к типуданных
STRING
и выполняется
{1<*index_1 <=index_2}AND(index_2<=LENGTH(left)),
то выражение, расположенное справа от оператора присваивания, замещает элементы, располо
женные в исходной строке между позициями
index_1
и
index_2.
П р и м е ч а н и е — Если LENGTH (right) о (index_2-index_1+1), то данным присваиванием
будет заменен элемент LENGTH (left);
g)если объект, которому присваивается значение уточнен, но не соответствует ни одному из перечис
ленных выше случаев, то фиксируется ошибка.
Если синтаксический анализатор, обеспечивающий проверку уровня 4 (см. 4.1.1) определит, что ре
зультат выражения принадлежит к типу данных, являющемуся обобщением типа данных, объявленного
для переменной, которой присваивается значение, тоданный оператор присваивания считается недопусти
мым. При этом могут существовать допустимые присваивания с использованиемданного оператора, если
фактические значения, возвращаемые выражением, соответствуют установленным выше условиям, одна
ко. может быть получен непредсказуемый результат, если фактические значения, возвращаемые выраже
нием. не совместимы с установленными выше условиями.
Частичные экземпляры, являющиеся недопустимыми экземплярами сложного объекта (см. приложе
ние В), не могут быть присвоены параметрам или переменным сложного объекта и переданы в качестве
фактических параметров функциям или процедурам. Данное требование не ограничивает присваивание
допустимых экземпляров сложного объекта.
13.4 Оператор CASE
Оператор выбора CASE обеспечивает механизм для выборочного исполнения операторов на основе
значения некоторого выражения. Оператор исполняется в зависимости от значения переключателя (эле
мент
selector).
Оператор выбора состоит из выражения, являющегося переключателем блоков, и списка
альтернативных действий, каждому из которых предшествует одно или несколько выражений, являющих
ся метками блоков. Результирующий тип данных метки блока должен быть совместим с типом данных
переключателя блоков. Выбирается первая встретившаяся метка блока, имеющая значение, равное пере
ключателю блоков, и исполняются операторы, связанные с данной меткой. Если результатом сравнения
метки и переключателя является
UNKNOWN
или
FALSE,
то выбор не проводится. Исполняется не более
одного из блоков выбора. Если переключатель блоков имеет неопределенное (?) значение, то исполняется
блок, которому предшествует ключевое слово
OTHERWISE,
при его наличии. Если метка блока имеет
неопределенное (?) значение, то результатом сравнения является
UNKNOWN,
и оператор не должен
95