19.1.3.2.2 Макрооперации логической адресации
Следующие макрооперации являются допустимыми и могут использоваться только в указанной форме:
a) СЛЕДУЮЩЕЕ ПОЛЕ (k: =1; f: = следующее (f));
b) ПРЕДЫДУЩЕЕ ПОЛЕ (k: = 1; f: = предыдущее (f)),
где "следующее (f)" и "предыдущее (f)" получены из ссылки к элементам "следующее поле" и "предыдущее поле" в ЗОП для поля, которое дано в 20.3.3.4.
19.1.3.3 Механизм окна обновления
Если в ОО используются поля, то действует только окно Z (см. 18.2.3).
19.1.3.4 Значения адресов и ограничения на обновления
Логический указатель может быть установлен в комбинацию координат z, f и k, при которых в настоящий момент поле не существует или для которой k недопустимо для адресуемого поля. Данный аргумент является допустимым. Никакая логическая операция обновления, включая операции АТРИБУТ и СТЕРЕТЬ, не могут быть выполнены.
19.1.3.5 Области адресов с возможностью определения поля
Область логических адресов используется в нескольких операциях над полями, определенными позже в данном разделе.
Область логических адресов задается логическим адресом начала (k(s), f(s), z(s)) и логическим адресом конца (k(f), f(f), z(f)), где
(k(s), f(s), z(s)) =< (k(f), f(f), z(f)) (см. 13.1.3.1).
Область адресов включает все адреса (k(i), f(i), z(i)), для которых (k(s), f(s), z(s)) =< (k(i), f(i), z(i)) =< (k(f), f(f), z(f)).
Предполагается, что для операций ЛОГИЧЕСКИЙ АТРИБУТ и ЛОГИЧЕСКОЕ СТЕРЕТЬ (19.2.2.3 и 19.2.2.4) область адресов включает только те комбинации координат, которые находятся внутри окон обновления всех размерностей, хотя спецификация области может включать значения вне этого интервала.
Область логических адресов может включать комбинации координат (f, z), в которых поле в настоящий момент не существует. Такие значения пропускаются.
Следующим специальным значениям присвоены символические имена:
"логический-текущий": | (k(с), f(с), z(c)) | - текущее значение логического указателя |
"логическое-начало":"начало-f":"начало-k": | (1, 1, 1)(1, 1, z(c)(1, f(c), z(c)) | может использоваться} только как начало области |
"логический-конец":"конец-f":"конец-k": | (k(m), f(m), z(m))(k(m), f(m), z(c))(k(m), f(c), z(c)) | может использоваться}только как конец области, |
где k(с), f(c), z(c) - текущие значения координат логического указателя;
k(m) - максимальная координата k в поле и является функцией комбинации координат (f, z);
f(m) - максимальное значение f, в котором поле существует в массиве Y и является функцией координаты z;
z(m) - верхняя граница окна обновления в размерности Z.
Они могут использоваться в любой паре или с явным значением (k, f, z). Использование формы "логический-текущий" как начало или конец недопустимо, если координата k является максимальным значением для текущего поля (см. 19.1.3.1).
Специальные символические значения логического указателя допустимы, если размерность Z не определена и эта координата опущена.
Примечание - Некоторые операции явной логической адресаций, определенные в 19.1.3.2.1, ссылаются к некоторым из вышеперечисленных специальных значений логического указателя как к значениям аргумента.
19.2 Операции обновления
19.2.1 Операции обновления, использующие указатель отображения
В этом подразделе определены операции обновления содержимого элементов массива ОО, использующие простой или расширенный указатели отображения (см. 13.1.1.1). Все эти операции подчиняются правилу доступа для ОО. Они могут также ограничиваться параметром "внешний доступ к полям" (см. 18.2.2 и 19.3).
19.2.1.1 Операция ТЕКСТ
Эта операция имеет форму
ТЕКСТ значение-первичного-атрибута
Она вводит заданное значение первичного атрибута в элемент массива, выбранный текущим указателем отображения, и вызывает неявную адресацию (см. 19.1.1.1 и 19.1.2.1).
Эта операция подчиняется управлению доступом, как определено в 19.3.
В интервале, соответствующем вторичному атрибуту "репертуар знаков" для элемента массива, должен быть единственный аргумент "значение-первичного-атрибута", которое определяется следующими условиями, проверяемыми в данном порядке:
a) модальное значение для этого атрибута, если он не "нуль";
b) значение этого атрибута в элементе массива, если этот элемент не пустой;
c) явное модальное значение по умолчанию для этого атрибута (см. 18.2).
Значение вторичного атрибута "репертуар знаков" в элементе массива устанавливается в выбранное значение (т.е. никаких изменений в случае b). См. также параметры ФСВТ "возможность репертуара" и "назначение репертуара" в 18.1 и 18.2.4.
Примечание - Настоящий стандарт не определяет смысл значения первичного атрибута, который не имеет назначенного средства в применяемом репертуаре.
Значение каждого вторичного атрибута воспроизведения (см. 13.2) в элементе массива после операции ТЕКСТ определяется следующими условиями в указанном порядке:
d) соответствующее модальное значение атрибута, если он не "нуль";
e) существующее значение в элементе массива, которое не изменялось, если оно не "нуль";
f) соответствующее глобальное значение атрибута, если он не "нуль";
g) соответствующее явное модальное значение атрибута по умолчанию (см. 18.2);
Кроме этого, для вторичного атрибута "шрифт": если операция ТЕКСТ изменяет вторичный атрибут "репертуар знаков", то условия е) и f) не используются и значение атрибута "шрифт" в подпункте g) не может быть определено до тех пор, пока не будет известен параметр "репертуар знаков".
Операция ТЕКСТ недопустима, если текущее положение указателя отображения не определяет элемент массива (см. 19.1.1.1) или если определяемый им элемент массива находится ниже нижней границы окна обновления (см. 19.1.1.3).
19.2.1.2 Операция ПОВТОРИТЬ ТЕКСТ
Эта операция имеет форму
ПОВТОРИТЬ ТЕКСТ адрес-конца строка-значений-первичных-атрибутов
Результатом операции является повторение операции ТЕКСТ (19.2.1.1) для элементов массива внутри области повторения, как описано ниже.