Пример оптимизации времени выполнения задания.

Пусть системная переменная sysvar содержит список с разделителем "," , состоящий из лексем-идентификаторов: Fdc,IH,_K4R,J7,_L876 ... Необходимо из этого списка удалить идентификаторы, начинающиеся с символа '_'. Для длинных списков работа с аппаратом лексем в системной переменной может занять значительное время, поэтому здесь предпочтительно использовать работу с системным списком. Для этой цели организуем цикл с использованием граничных контекстов:


Контекст поиска: Контекст замены:
====================================================================
<!> #[BlockList(ldlexm,sysvar,syslist,,",")]
Загрузка системного списка syslist из системной переменной sysvar;


<!>repeat #[BlockList(lcount,syslist,sysvar1)]
Запись числа элементов списка в системную переменную sysvar1 - формирование счетчика цикла;


<!> #[BlockList(lgetstr,syslist,sysvar2,sysvar1); BlockFind(postxt,sysvar2,sysvar3,"_")]
Чтение из системного списка syslist в системную переменную sysvar2 элемента с индексом sysvar1 и поиск в нем вхождения контекста "_" (номер начала позиции найденного контекста заносится в sysvar3 ;


<!>|[sysvar3=1]| #[BlockList(ldel,syslist,,sysvar1)]
Контроль символа "_" в первой позиции идентификатора и при удовлетворении условия удаление ячейки c номером sysvar1 из системного списка syslist;


<!>until|[sysvar1-1=0 :: else]| #[:: sysvar1-1//sysvar1]
Контроль счетчика цикла sysvar1 на достижение индекса списка равного 1, иначе уменьшение счетчика на 1;


<!> #[BlockList(svlexm,sysvar,syslist,,","]
Выгрузка системного списка syslist в системную переменную sysvar с разделителем ",";
====================================================================