<операция>:
save - сохранение строк блока редактирования (блок чтения) в
ячейке общего архива (блок записи);
repl - замена строк в блоке записи на блок чтения;
insb - вставка строк блока чтения перед строками блока записи;
inse - вставка строк блока чтения после строк блока записи;
del - удаление строк блока редактирования (по умолчанию удаляется
весь блок);
add - добавление строк в блок редактирования (строки добавления
определяются параметром блока чтения);
coll - слияние строк блока редактирования (по умолчанию сливается
весь блок);
reted - переход по таблице контекстов из текущего блокового
контекста на блоковый контекст, номер которого указан в
четвертом параметре блоковой функции, причем на вход
вызываемому блоковому контексту подаётся входная строка,
к началу которой добавлены все строки, содержащиеся в блоке
редактирования, возврат из нового блокового контекста
производится на следующую ячейку таблицы основного блокового
контекста; например, BlockOper(reted,,,5);
retbl - рекурсия по текущему блоковому контексту таблицы контекстов,
номер которого указывается в параметре, причём на вход
подаётся строка, отредактированная на прошлом шаге итерации
(эта строка берётся из блока редактирования);
например, BlockOper(retbl,,,3);
brk - прерывание поиска контекстов по файлу редактирования после
того, как найден блок редактирования, в котором находится
контекст замены (выполненная в блоке редактирования редакция
заносится в выходной файл); например, BlockOper(brk) ;
brkbl - прерывание рекурсии текущего блока и установка курсора на
ячейку таблицы, стоящую за строкой входа в итерационный цикл
по операции retbl, а если такой ячейки таблицы нет, то на
начало таблицы контекстов (принудительно изменить установку
курсора можно операцией setcn);
например, BlockOper(brkbl,,,11) ;
setln - позиция указателя по входному файлу:
-сдвиг от текущего значения при чтении очередной строки
исходного файла редактирования на n (n>=1) строк вверх
(по умолчанию на одну строку вверх);
-сдвиг строки чтения на число строк в блоке редактирования
(при n=#), т.е. к началу текущей входной строки
добавляются все строки из блока редактирования;
например, BlockOper(setln,,,2), BlockOper(setln,,,#);
setst - позиция указателя для найденного контекста:
-установка указателя на n-ю позицию строки (для n без
знака);
-сдвиг указателя по строке файла редактирования на n
символов от конца найденного контекста поиска (при -n
к началу строки, при +n к концу строки, при n=-0 сдвиг
на начало строки, при n=+0 за пределы строки);
-игнорирование найденного контекста при n=0 (по умолчанию),
в этом случае контекст считается ненайденым и курсор не
изменяет своего значения;
например, BlockOper(setst), BlockOper(setst,,,-2);
Замечание. Если необходимо в ячейке Таблицы контекстов
произвести действия "поиск-замена" без изменения позиции
указателя по строке, то в качестве контекста поиска следует
задать {?}, а в контексте замены использовать блоковую
функцию #[… BlockOper(setst) …], однако, если курсор может
стоять на конечном символе строки \0d и при дальнейшем
поиске не должна читаться следующая входная строка, то в
качестве контекста поиска следует задать {\0d?};
setcn - позиция указателя по таблице контекстов:
-установка указателя на n-ю (n>=1) ячейку таблицы
контекстов;
-сдвиг указателя по таблице контекстов на n ячеек от
текущего значения (при -n к началу таблицы, при +n к
концу таблицы);
-сохранение текущего указателя по таблице для следующего
шага редактирования при n=0 (по умолчанию);
-установка указателя на ячейку таблицы контекстов для
"нестандартного" возврата из блока редактирования nblk,
если он был вызван из другого блока редактирования
оператором BlockOper(reted,,,nblk); стандартно возврат
из блока производится на ячеку, следующую за оператором
вызова, а для изменения этого порядка следующим параметром
после setcn необходимо указать параметр return и этот
оператор должен находиться в конечной конструкции '%$'
блока редактирования nblk;
например, BlockOper(setcn), BlockOper(setcn,,,+5),
BlockOper(setcn,return,,-4);