Условный внутренний блок |
Условные внутренние блоки не используются в управляемых формах-прототипах.
Условные внутренние блоки предназначены для работы с простыми строками.
Блок управляется условием, выполнение которого влечет за собой однократное исполнение тела блока.
< условный внутренний блок> ::= .{?internal <условие исполнения> <тело блока> .}
Условный внутренний блок открывается ключевой конструкцией .{?internal и закрывается ключевой конструкцией .}, стоящими в первой позиции строки.
При описании условных внутренних блоков используются ключевые символы циклов. Однако внутренние блоки не являются циклами (выполняются только один раз).
<условие исполнения> ::= ;<логическое выражение>;
Условие исполнения начинается и заканчивается точкой с запятой. Между точкой с запятой и логическим выражением не должно быть пробелов.
Условие целиком располагается в первой ключевой строке условного внутреннего блока.
Условие исполнения представляет собой логическое выражение, результатом вычисления которого является логическая переменная. Если выражение истинно, то условный внутренний блок исполняется, иначе - нет.
В логических выражениях можно использовать те же операнды, что в арифметических выражениях данной формы.
<тело блока> ::= { [<программный блок>] <простая строка> }
Тело условного внутреннего блока содержит простые строки и необязательные программные блоки.
Пример
Форма-прототип:
.form s1 .fields a:integer a1:integer a:integer .endfields .{checkenter ext hellow ^ .{checkenter asa ^ внутренний цикл .} goodby ^ .} .endform
Присоединенная форма:
.linkform s2 prototype is s1 .var b:integer .endvar .fields a .endfields .{checkenter ext hellow ^ .{checkenter asa .{?internal ;(a=3) or (a=4); .begin b:=а1+а .end .} .fields b a .endfields ^ внутренний цикл .} goodby ^ .} .endform
Входной поток:
Предположим, внешний цикл имеет 4 итерации, а внутренний - 2 итерации в каждой итерации внешнего цикла.
1 итерация: а=1; а1=5;
2 итерация: а=2; а1=6;
3 итерация: а=3; а1=7;
4 итерация: а=4; а1=8;
Исполнение формы-прототипа:
hellow1 5 внутренний цикл 5 внутренний цикл goodby1 hellow2 6 внутренний цикл 6 внутренний цикл goodby2 hellow3 7 внутренний цикл 7 внутренний цикл goodby3 hellow4 8 внутренний цикл 8 внутренний цикл goodby4
Исполнение присоединенной формы:
hellow1 5 внутренний цикл 5 внутренний цикл goodby1 hellow2 6 внутренний цикл 6 внутренний цикл goodby2 hellow3 10 внутренний цикл 10 внутренний цикл goodby3 hellow4 12 внутренний цикл 12 внутренний цикл goodby4