Кроме блока GENERATE, для создания транзактов может использоваться блок SPLIT (РАЗДЕЛИТЬ), который выполняет функцию копирования транзакта, входящего в него. Этот транзакт называется начальным или порождающим. Все копии формируются в момент входа начального транзакта в блок SPLIT. Каждая новая копия становится членом семейства {ансамбля) транзактов, порожденных одним начальным транзактом, который был создан блоком GENERATE.
Блок имеет такой формат:
SPLIT A,[B1],[C1]
Таблица 4.47
Операнд | Значение | Результат по умолчанию |
А | Число создаваемых копий транзакта | Ошибка |
В | Метка блока, куда направляются копии | |
С | Параметр, в котором запоминаются номера копий транзактов |
Операнд А может быть положительным целым, СЧА, СЧА*СЧА. Если вычисленное значение операнда А равно нулю, то блок SPLIT не выполняет никаких операций. После создания копий начальный транзакт пытается перейти к очередному блоку.
Операнд В задает блок, в который переходят копии начального транзакта. Операнд может быть именем (меткой), положительным целым, СЧА, СЧА*СЧА (в трех последних случаях операнд В задает номер блока). Значение операнда В вычисляется для каждой копии отдельно.
|
|
Операнд С задает параметр транзакта, который используется для присвоения копиям последовательных номеров. Операнд С может быть именем, положительным целым, СЧА, СЧА*СЧА.
Транзакты, принадлежащие одному семейству, объединяются интерпретатором в список. По связям внутри семейства транзактов невозможно установить, какой из транзактов семейства является начальным. Если копия транзакта входит в блок SPLIT, то повторная копия становится членом того же семейства, что и первичная копия. Таким образом, каждый транзакт является членом одного и только одного семейства. Семейство может состоять из произвольного числа транзактов. Когда транзакт уничтожается, интерпретатор автоматически исключает его из членов соответствующего семейства. Таким образом, семейство существует до тех пор, пока из модели не удалится последний из ее членов.
В модели одновременно может присутствовать произвольное число семейств, оно все время меняется, поскольку каждый транзакт, генерируемый блоком GENERATE, может создать свое семейство.
Пример 4.50
В цех каждые 14±3 мин поступают партии деталей. Каждая партия состоит из 3±2 деталей. Все детали поступают на обработку станком. Время обработки составляет 3±1 мин.
COPY FUNCTION RN1,C2
GENERATE 14,3
SPLIT FNSCOPY
SEIZE MACHINE
ADVANCE 3,1
RELEASE MACHINE