Блок SPLIT16, так же как блок
GENERATE предназначен для создания транзактов. Но в отличие от GENERATE блок
SPLIT не создает самостоятельных транзактов, а лишь генерирует заданное число копий
входящего в него транзакта. Получаемые копии идентичны исходному транзакту. Число
копий задается в поле А. После прохождения блока SPLIT исходный транзакт
направляется в следующий блок, а все копии пересылаются по адресу, указанному в поле
В (в том числе и к следующему блоку). Таким образом, если в поле А задано число i, то из
блока выйдут i+1 транзакт. Далее исходное сообщение и копии являются равноправными
и могут проходить снова через любое число блоков SPLIT. Все транзакты, полученные
копированием, а также копии копий принадлежат к одному ансамблю и далее к этому
ансамблю можно применять специальные блоки, осуществляющие обработку ансамблей
транзактов (например, MATCH, ASSEMBLE, GATHER).
Получаемый ансамбль транзактов может быть пронумерован. Для этого в поле С
записывается номер параметра транзакта, в котором будет произведена нумерация. Если в
исходном транзакте значение этого параметра было равно k, то после нумерации
исходный транзакт получит значение k + 1, первая копия — k + 2 и т. д,
Так как копии транзакта могут иметь параметры разных типов, то необходимо
использование индекса для указания типа параметра, который берется при объединении в
серии. Допускаются индексы: РН — параметр формата «полуслово»; PF — параметр
формата «слово»; РВ — параметр формата «байт». Исходный транзакт и копии
объединяются в серии по заданному параметру. В приведенном ниже примере
рассматривается случай, когда параметр 10 формата «байт» имеет значение N при входе
транзакта в блок SPLIT. При выходе из блока значение его станет N+1, а значения
параметра 10 (формата «байт») транзактов копий соответственно будут: N+ 2, ...
SPLIT 6,NEXTY,10PB
Копии, полученные в блоке SPLIT, могут иметь число и типы параметров, отличные от
исходного транзакта.
В полях D, Е, F и G блока SPLIT определяются число и типы параметров,
присваиваемых копиям. Эти поля, начиная с поля D, можно задавать в любом порядке. В
каждом поле должен быть указан индекс параметра для определения его типа
(используются те же индексы, что и в блоке GENERATE). В копии переносятся значения
только тех параметров исходного транзакта, для которых есть соответствующие номера.
Если поля D, F, Е и G пусты, параметры копий такие же, как и у исходного транзакта. В
приведенном ниже примере каждая из восьми копий будет иметь по восемь параметров
формата «плавающая точка» и четыре параметра формата «байт». Если исходный
транзакт имеет соответствующие параметры, содержимое параметров будет передано
копиям:
SPLIT 8.NEXTZ„8PL,4PB
Все транзакты, сгенерированные блоками SPLIT, из одного исходного транзакта и его
копий, принадлежат к одному ансамблю. Число транзактов в ансамбле произвольно.
Каждый транзакт, созданный в блоке GENERATE, является отдельным ансамблем. Таким
образом, число ансамблей в системе произвольно, и ансамбль существует до тех пор, пока
в нем находится хоть один транзакт.
Сноски:
16 Split - расщепить |