Блоки, определяющие направление перемещения транзактов по модели в GPSS

TRANSFER A, B, С, D пересылает транзакт в требуемую точку модели, где A — режим передачи, B,C — следующие блоки, D — значение индекса, используемое в режиме ALL.

Возможны такие режимы работы блока, задаваемые полем А:
1. ПРОБЕЛ — транзакт передается в блок, задаваемый полем В (безусловный переход);
2. ЧИСЛО, начинающееся точкой, означающее вероятность перехода в блок С, а дополнение числа до 1 означает вероятность перехода в блок В;
3. ALL — транзакт последовательно пытается перейти в блоки, определяемые значениями B, B+D, B+2D, …, C;
4. BOTH — транзакт последовательно пытается войти сначала в блок В, а затем в блок С до тех пор, пока один из них не станет доступным;
5. FN — поле В является номером функции, и следующий блок определяется суммой значения этой функции и поля С;
6. P — поле В является номером параметра транзакта и следующий блок определяется суммой значения этого параметра и поля С;
7. PICK — следующий блок выбирается с равной вероятностью из блоков с номерами B, B+1,…,C;
8. SBR — режим перехода к программе — номер текущего блока перемещается в параметр, указанный в поле С, а транзакт передается в блок, номер которого указан в поле В.

Примеры

1. TERANSFER ,NEXT; безусловная передача транзакта на блок с меткой NEXT
2. TRANSFER .355, FC1, UST1; передача транзактов с вероятностью 0,645 в блок FC1 и с вероятностью 0.355 в блок UST1.

TEST_r A, B проверяет выполнение определенного условия, задаваемого отношением r между стандартными числовыми атрибутами A и В, т.е. отношением (A r B):
1) если это условие выполняется, то транзакт входит в данный блок TEST и будет пытаться передвигаться в следующий блок;
2) если условие не выполняется, то:
— если указан блок С, то транзакт передается в этот блок С,
— если же С не задан, то транзакт блокируется, т.е. задерживается в предыдущем блоке до снятия условия блокировки.

Отношение r может принимать следующие значения:

E — равно;
NE — не равно;
L — меньше чем;
LE — меньше или равно;
G — больше чем;
GE — больше или равно.

Примеры

1. TEST_E P$1,2,MET1; если значение первого параметра транзакта равно 2, то транзакт войдет в блок TEST и продолжит движение в следующий блок, иначе транзакт перейдет в блок с меткой MET1.
2. TEST_L FN$4,P$2; если значение функции 4 меньше значения параметра 2 данного транзакта, то транзакт входит в блок TEST, иначе задержится перед этим блоком (заблокируется движение данного транзакта).

GATE_R A, B проверяет значение внутреннего операнда R, являющегося стандартным логическим атрибутом и отражающего состояние устройства, памяти или ключа, номер которого задается полем А. При этом СЛА R может принимать значения:

U -устройство занято;
NU — устройство не занято;
I — устройство прервано;
NI — устройство не прервано;
SF — память заполнена;
SNF — память не заполнена;
SE — память пустая;
SNE — память не пустая;
LR — ключ выключен;
LS — ключ включен;
M — транзакт находится в состоянии синхронизации;
NM — транзакт не находится в состоянии синхронизации.

Примеры.
1. GATE_SF 1; если память номер 1 полна, то транзакт входит в блок GATE, иначе ждет ее заполнения.
2. GATE_NU P$2, МТК; если устройство, номер которого указан параметром 2, не занято, то транзакт входит в блок GATE, иначе он входит в блок с меткой МТК.

LOOP A, B используется для организации в модели циклов, т.е. с его помощью можно предусмотреть многократное прохождение транзактом заданной цепочки блоков. Здесь А — номер параметра, значение которого определяет число циклов; В — блок, на который переходит транзакт, если значение параметра с номером А не равно 0.

Пример
LOOP 2, VTN; уменьшает значение параметра 2 на 1 и, если параметр 2 не равен 0, то переходит на блок с меткой VTN, иначе — к следующему блоку модели.


Оставить комментарий





Статистика

Рейтинг@Mail.ru