Условный внутренний блок Назад В начало Вперед

Условные внутренние блоки не используются в управляемых формах-прототипах.

Условные внутренние блоки предназначены для работы с простыми строками.

Блок управляется условием, выполнение которого влечет за собой однократное исполнение тела блока.

< условный внутренний блок> ::=
		.{?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