Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


BCD TRANSFER .P1, BLK3, BLK4



Трехзначное число, записанное в параметре 1 сообщений, входящих в блок BCD, интерпретируется как вероятность (в частях от тысячи) того, что сообщение попытается войти в блок BLK4. В остальных случаях сообщение попытается войти в блок BLK3.

CDE TRANSFER .X1, BLK5, BLK6

Если в момент входа сообщений в блок CDE в ячейке SAVEVALUE 1 записано число 30, то в среднем 3 % от общего числа сообщений будет направлено к блоку BLK6, а остальные 97 % попытаются войти в блок BLK5.

Режим BOTH

Если в поле  А стоит зарезервированное слово ВOTH, блок TRANSFER работает в режиме BOTH.

В этом режиме каждое входящее сообщение сначала пытается перейти к блоку, указанному в поле В. Если это сделать не удается, сообщение пытается перейти к блоку, указанному в поле С. Если сообщение не сможет перейти ни к тому, ни к другому блоку, оно остается в блоке TRANSFER и будет повторять в том порядке попытки перехода при каждом просмотре списка текущих событий, до тех пор, пока не сможет выйти из блока TRANSFER. Ниже приведен фрагмент программы, в котором сообщение сначала пытается перейти к блоку TRY1. Если оно не может войти в этот блок, оно пытается войти в блок TRY2. Если сообщение не может войти и в этот блок, оно остается в списке текущих событий и повторяет эти попытки при каждом просмотре списка до тех пор, пока не выйдет из блока TRANSFER.

TRANSFER BOTH, TRY1, TRY2

TRY1 SEIZE 1

TRY2 SEIZE 2

     

Режим ALL

Если в поле А стоит зарезервированное слово ALL, блок TRANSFER работает в режиме ALL.

В этом режиме каждое входящее сообщение прежде всего пытается перейти к блоку, указанному в поле В. Если сообщение в этот блок войти не может, то последовательно проверяются все блоки в определенном ряду в поисках первого, способного принять это сообщение, включая блок, указанный операндом С. Номер каждого проверяемого блока вычисляется как сумма номера предыдущего блока и шага, заданного операндом D:

N + M, N + 2M, N + 3M, ... L,

где N - номер блока, указанного в поле В;

М - значение шага, заданного в поле D;

       L - номер блока, указанного в поле С.

Этот номер должен быть больше номера блока, указанного в поле В, на величину, кратную шагу М. Если операнд D не задан, то проверяется каждый блок, номер которого принадлежит этому ряду, включая блок, определенный операндом С . Блоки, номера которых выше номера блока, указанного в поле С, не проверяются. Как только первый блок, способный принять сообщение, будет найден, сообщение входит в этот блок и оттуда продолжает свое дальнейшее движение. Если сообщение не может перейти ни к одному из указанных блоков, оно остается в блоке TRANSFER и повторяет описанную выше процедуру при каждом просмотре списка текущих событий до тех пор, пока не выйдет из блока.

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

Например,

TRANSFER ALL, 60, 120, 10

В этом примере сообщение будет последовательно пытаться перейти к блокам 60, 70, 80, ... 120.

TRANSFER ALL , NEXT 1, NEXT 2, 5

Здесь режим ALL допустим только в том случае, если разность между номерами, присвоенными блокам NEXT 1 и NEXT 2, кратна 5.

TRANSFER ALL, 60, 120, 25

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

Условными являются только режимы BOTH и ALL. Во всех остальных режимах выбор следующего блока производится в момент входа сообщения в блок. В режимах BOTH и АLL выбор следующего блока производится в момент снятия блокирующего условия. Следует отметить, что каждый раз, когда интерпретатор при просмотре списка текущих событий обнаруживает сообщение, задержанное в блоках TRANSFER BOTH или TRANSFER ALL, он пытается продвинуть сообщение, начиная с блока, указанного в поле В. Следовательно, в режиме BOTH в тех случаях, когда возможен переход к обоим блокам (В и С), блок В имеет некоторое преимущество. Аналогично, в режиме ALL в случае, когда возможен переход к нескольким блокам, блоки с меньшими номерами имеют некоторое преимущество перед блоками с большими номерами.

Режим PICK

Если в поле А стоит зарезервированное слово PICK, блок TRANSFER работает в режиме PICK. В этом режиме из последовательности блоков с номерами N, N+1, N+2,...M (N - номер блока, указанного поле В, а М - номер блока, указанного в поле С) случайным образом выбирается один блок, к которому должно быть направлено сообщение.

Все блоки, включая указанные в полях В и С, выбираются с одинаковой вероятностью, равной 1/(М-N)+1. Сообщение пытается перейти только к выбранному для него блоку. Если сообщение не может сразу перейти к следующему блоку, то оно будет ждать в блоке TRANSFER до тех пор, пока не будет снято блокирующее условие. Номер блока в поле С должен быть больше или равен N+1.

Например,

TRANSFER PICK,30,39

Сообщение, вошедшее в блок TRANSFER, пытается войти в один из 10 блоков (30,31,...39) с равной вероятностью: 1/10.

Помимо блока TRANSFER, потоком сообщений может управлять блок TEST.

Блок TEST имеет следующий формат:

TEST < X > < A >,< B >,[< C >]

Графическое представление блока (в безусловном режиме):

Определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком сообщений, проверяя выполнение алгебраических отношений между значениями СЧА, заданных в полях А и В.

Операнды А и В - сравниваемые величины, которые могут быть именем, любым целым числом, СЧА или СЧА*<параметр>.

Во вспомогательном поле операции оператора описания блока TEST - <X> - записывается один из шести условных операторов:

'L' - меньше. Отношение истинное, если значение аргумента поля А меньше значения аргумента поля В;

'LE' - меньше или равно

'E' - равно.

'NE' - не равно.

'G' - больше.

'GE' - больше или равно.

Если отношение СЧА, заданных в полях А и В, истинно, сообщение переходит к следующему блоку. Если отношение ложно, сообщение переходит к блоку, номер которого задан полем С.

C - номер блока для входящего сообщения, если отношение величин, заданных в полях А и В, ложно. Операнд C может быть именем, положительным целым числом, СЧА или СЧА*<параметр>.

Пример.

TEST G M1,500,SSS

SEIZE 1

SSS SEIZE 2

                        

Если значение времени пребывания транзакта в модели больше 500, то переходим к следующему по номеру блоку,  ложно к метке SSS.


Поделиться:



Последнее изменение этой страницы: 2019-04-11; Просмотров: 307; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.023 с.)
Главная | Случайная страница | Обратная связь