ГОСТ Р И С 010303-11— 2009
12.5 Строковые операторы
Помимо операторов отношений, определенных в 12.2.1.4 и 12.2.5, для строкового типаданных
определены еще два оператора — индексирования ([]) и конкатенации (♦).
12.5.1 Индексирование строк
Оператор индексирования строк принимает два операнда — индексируемую строку и спецификацию
индексов, а его результатом является строка с длиной, определяемой выражением
(index_2-lndex_1+1).
Поученная в качестве результата строка эквивалентна последовательности символов, расположенных в
индексируемой строке на позициях от
index_1
до
index_2
включительно. Если требуется строка единич ной
длины, то необходимо указать только
in de xjl.
Значение индекса, равное 1. указывает на самый левый
символ индексируемой строки.
Синтаксис:
239 index_qualifier = ’ (’ index_1 [ ’ * index_2 ] ’]*.
237 index_1 = index .
236 index = numeric_expression.
238 index_2 = index .
Правила и ограничения:
a) Параметр index_1 должен быть представлен положительным целым числом или неопределен
ным (?) значением.
b
) Должно выполняться условие l£indox_l£LENGTH (строковое значение), в противном
случае будет возвращено неопределенное (?) значение.
c) Если параметр index_2 задан, то он должен быть представлен положительным целым числом
или неопределенным (?) значением.
d)Должно выполняться условие lndox_1iindex_2iLENGTH (строковое значение), в противном
случае будет возвращено неопределенное (?) значение.
e) Если index_1 или index_2 имеет неопределенное (?) значение, то результатом также будет
неопределенное (?) значение.
0 Если индексируемое выражение имеет неопределенное (?) значение, то результатом также
будет неопределенное (?) значение.
Примеры
1Седьмой символ строковой переменной name может быть проверен следующим образом:
IF name[7] = "00125FEr THEN... - - используется кодировка по ИСО 10646
IF name[7:7] = "00125FEr THEN... — эквивалентное выражение
2 Символы с седьмого по десятый строковой переменной name могут быть проверены следую
щим образом:
IF name[7:10] = ’Some’ THEM...
12.5.2 Оператор конкатенации строк
Оператор конкатенации строк (♦) является строковым оператором, соединяющим две строки вместе.
Оба операнда должны иметь строковое значение, а результатом является строковое значение, содержа
щее конкатенацию двух операндов, при этом содержимое первого операнда расположено слева. Если
какой-либо из операндов имеет неопределенное (?) значение, торезультат будет также иметь неопределен
ное (?) значение.
Пример — Строковые значения могут быть соединены следующим образом:
пате := ’АВС’’DEF’ ;
(’переменная пате теперь содержит строку ’ABC DEF’ *)
12.6 Операторы агрегированных структур
К операторам агрегированных структур относятся операторы индексирования ([]), пересече
ния (*), объединения (+). различия (-), подмножества (<=). сулермножества (>=) и запроса (QUERY).
Определения данных операторов установлены ниже. Ко всем агрегированным значениям применимы
также определенные в 12.2 операторы отношений — «равно» (*), «неравно» (<>). «равенство экземпля
ров» (:=:), «неравенство экземпляров» (:<>:) и IN.
П р и м е ч а н и е — Для некоторых операций над агрегированными структурами требуются неявные
сравнения элементов агрегированных структур; при этом используется сравнение экземпляров.
80