Блок assign
Используется для определения и изменения параметров транзактов
При входе транзакта в модель начальные значения всех его параметров устанавливаются в ноль. Для изменения параметров транзактов используется блок ASSIGN (НАЗНАЧИТЬ). При входе транзактов в блок ASSIGN параметры могут задаваться или изменяться. Формат блока:
ASSIGN А,В,С .
Операнд А определяет имя или номер модифицируемого или задаваемого параметра.
Блок ASSIGN может использоваться в режиме замещения значения параметра и в режиме увеличения или уменьшения значения параметра.
В режиме увеличения текущее значение параметра увеличивается на значение, указанное в операнде В.
В режиме уменьшения текущее значение параметра уменьшается на величину, указанную в операнде В.
В режимах увеличения и уменьшения после операнда А перед запятой, разделяющей операнды А и В, соответственно режиму ставятся знаки "+" или "-".
В режиме замещения после операнда А ничего не ставится
Операнд С (если используется) определяет во сколько раз необходимо увеличить операнд В
Изменение направления движения транзактов Блок transfer
Блок TRANSFER (передать) предназначен для передачи входящего в этот блок транзакта в любой другой блок модели и может быть использован в разных режимах. Существуют следующие режимы работы блока:
безусловный режим - переход к указанному блоку;
статистический режим — выбор случайным образом одного из двух блоков;
режим ВОТН — последовательный выбор одного из двух блоков;
режим АLL - последовательный выбор одного из нескольких блоков;
режим РIСК — выбор случайным образом одного из нескольких блоков;
режим FN — функциональный режим;
режим Р — параметрический режим;
режим SBR — подпрограммный режим;
режим SIМ — одновременный режим.
В общем случае блок TRANSFER имеет следующий формат:
TRANSFER А,В,С,D
В зависимости от режима использования блока TRANSFER меняется число и назначение используемых операндов блока. Рассмотрим три основных режима, чаще других применяемых на практике.
Статистический режим.
TRANSFER А,В,С .
В этом режиме операнд А используется и не является зарезервированным словом, предназначенным для обозначения режима (ВОТН, АLL, РIСК, FN, Р, SBRК). В этом режиме осуществляется передача транзакта в один из двух блоков случайным образом.
Операнд А определяет вероятность передачи транзакта в блок, позиция которого задана операндом С; операнд В определяет позицию блока, в который должен перейти транзакт с вероятностью 1-А, операнд С определяет позицию блока, в который должен перейти транзакт с вероятностью равной значению операнда А. Позиция блока - это номер или метка блока.
Если значение операнда А - положительное целое число, то вероятность интерпретируется в долях тысячи. Если при задании вероятности в операнде А первый символ записи значения операнда есть "." (десятичная точка), то значение вероятности интерпретируется как десятичная дробь, например, 0.235. Таким образом, если значение операнда А записать в виде "333", либо ".333", то результат в обоих случаях будет одинаковым. Если значение операнда А окажется меньше или равно нулю, то все транзакты будут направляться в блок, указанный в операнде В. Если значение операнда А окажется больше или равно 1000, то все транзакты будут направляться в блок, указанный в операнде С.
Режим безусловной передачи.
TRANSFER ,В
В этом режиме операнд А не используется; операнд В определяет позицию блока, в который должен перейти транзакт. Так как операнд А не используется, то перед операндом В должна стоять запятая. В режиме безусловной передачи блок TRANSFER не может отказывать транзакту во входе. Если в данном режиме транзакт входит в блок TRANSFER, то он сразу же пытается войти в блок, указанный в операнде В. Если блок, указанный в операнде В, не принимает транзакт, то транзакт остается в блоке TRANSFER и в дальнейшем и при каждом просмотре списка текущих событий будет повторять попытки перейти в заданный блок.
Режим ВОТН. Если в операнде А стоит зарезервированное слово ВОТН, то блок TRANSFER работает в режиме ВОТН.
В этом режиме входящий в блок TRANSFER транзакт сначала пытается перейти к блоку, указанному в операнде В. Если это сделать не удается, то транзакт пытается перейти в блок, указанный в операнде С. Если транзакт не сможет перейти ни к тому, ни к другому блоку, то он остается в блоке TRANSFER и при каждом просмотре списка текущих событий будет повторять в том же порядке попытки перехода до тех пор, пока не сможет выйти из блока TRANSFER.
TEST X A,B,C
Блок определяет номер следующего блока для вошедшего в него транзакта в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком транзактов, проверяя выполнение алгебраических отношений между значениями, заданными в полях <А> и <В>. Во вспомогательном поле операции <Х> записывается один из шести условных операторов:
LE — меньше или равно (отношение истинное, если значение аргумента поля <А> меньше или равно значению аргумента поля <В>);
GЕ — больше или равно (отношение истинное, если значение аргумента поля <А> больше или равно значению аргумента поля <В>);
Е — равно (отношение истинное, если значения обоих аргументов полей <А> и <В> равны);
L — меньше (отношение истинное, если значение аргумента поля <А> меньше значения аргумента поля <В>);
G — больше (отношение истинное, если значение аргумента поля <А> больше или равно значению аргумента поля <В>);
NE — не равно (отношение истинное, если значения аргументов полей <А> и <В> не равны).
Если отношение аргументов истинно, транзакт переходит к следующему по номеру блоку. Если отношение ложно, транзакт переходит к блоку, имя которого задано полем <С>.