Вложенные фрагменты и вызов вложенных фрагментов

<< Click to Display Table of Contents >>

Navigation:  Для опытных пользователей > Стандартные фрагменты > Метод стандартных фрагментов >

Вложенные фрагменты и вызов вложенных фрагментов

Оператор ВЫЗОВ ФУНКЦИИ или ВЫЗОВ ФРАГМЕНТА имеет общий вид записи:

 

:Ф<поисковый номер фрагмента в ОФ>*

или

:Ф<поисковый номер фрагмента в ОФ>['<список глобальных переменных>]*

 

Пример вызова фрагмента с поисковым образом Ф1-1-2 из фрагмента Ф100, с передачей в него глобальных переменных для связи входа и выхода.

 

Ф100’Т*

:В$ЧИСЛО1=7'$ЧИСЛО2=3,7'$РЕЗ1='$КОД1=*

:Ф1-1-2*

L результат равен: ?РЕЗ1.;  код завершения: ?КОД1.*

<Ф*

 

Текст внутреннего фрагмента Ф1-1-2, вызываемого из Ф100.

 

Ф1-1-2'Т*

:К Пример деления значения переменной ЧИСЛО1 на переменную ЧИСЛО2*

:ВКОД1=нормальный*

:Если ЧИСЛО2=0'тогда 1'иначе 2*

:Метка 1*

:ВКОД1=деление на ноль'РЕЗ1=не определён*

:Выход*

:Метка 2*

:Арифметика (15)РЕЗ1=?ЧИСЛО1.:?ЧИСЛО2.*

<Ф*

 

Во фрагмент Ф1-1-2  попадают переменные, описанные в операторе ВВОД как глобальные, и с ними можно делать любые операции. Другие переменные (не введенные как глобальные) во фрагменте Ф100 не видны  для фрагмента Ф1-1-2. В самом фрагменте Ф1-1-2 если вводить новые глобальные переменные, то при выходе из него во фрагмент Ф100 они будут уже видны и в нём.

 

В свою очередь фрагмент Ф1-1-2 может вызвать следующий фрагмент Ф1-1-3, тогда и в нем будут видны все глобальные переменные введенные ранее по всем вложениям. Вложенность фрагментов друг в друга достигает 1000 веток, после чего процесс считается ошибочным (зацикливание).

 

Вызываемый фрагмент из фрагмента может содержать в себе описание и глобальных переменных.

Пример:

 

Ф100’Т*

:ВЧИСЛО1=7'ЧИСЛО2=3,7*

:Ф1-1-2’$ЧИСЛО1=?ЧИСЛО1.'$ЧИСЛО2=?ЧИСЛО2.'$РЕЗ1='$КОД1=*

L результат равен: ?РЕЗ1.;  код завершения: ?КОД1.*

<Ф*

Вызов фрагментов можно делать из любой части тела фрагмента за исключением внутри блока, где делается описание диалога. Это сделано, чтобы диалог внутренних фрагментов не запускался раньше внешних, которые еще не закрыты.

 

Вызываемые вложенные фрагменты должны быть в оперативном файле или же в базе знаний стандартных фрагментов.