Нужно разбить поле 1100 на 4 части и на каждую часть IP-адреса наложить требуемые ограничения.
Это можно сделать 2-я способами.
1-й способ будет работать на любой версии Ирбис, которая поддерживает глобальные переменные. Основан он на использовании unifor('G'). Глобальные переменные используются для временного хранения частей IP-адреса.
&uf('+7W1'),&uf('+7W2#'v1100),/* обнуляем задействованные ГП
&uf('+7U1#'&uf('G0.'g2)),/* сохраняем первую часть IP в первое повторение ГП 1
&uf('+7W2#'&uf('G2.'g2)),/* вырезаем из IP первую, уже выделенную, часть
&uf('+7U1#'&uf('G0.'g2)),/* повторяем действия 3 раза
&uf('+7W2#'&uf('G2.'g2)),/* получили вторую часть
&uf('+7U1#'&uf('G0.'g2)),
&uf('+7W2#'&uf('G2.'g2)),/* получили третью часть
&uf('+7U1#'&uf('G0.'g2)),
if val(&uf('+7R1,1'))=192
and val(&uf('+7R1,2'))=168
and val(&uf('+7R1,3'))=10
and (val(&uf('+7R1,4'))>0 and val(&uf('+7R1,4'))<256)
then |.|+g1 fi
2-й способ более компактный, но требует подключения
внешней библиотеки ex64.dll. Он основан на применении регулярных выражений.
&uf('+7W1#'&uf('+8ex64,split,\.'#v1100))
if val(&uf('+7R1,1'))=192
and val(&uf('+7R1,2'))=168
and val(&uf('+7R1,3'))=10
and (val(&uf('+7R1,4'))>0 and val(&uf('+7R1,4'))<256)
then |.|+g1 fi