Использование в блоках ЕNТЕR и LEAVE операнда В
В блоках ЕNТЕR и LЕАVЕ можно использовать операнд В. На рис.22.2 дано повторение рис. 22.1 с добавлением использования операнда В. Как показано на рисунке, операнд В задает число приборов, которое должно быть занято в блоке ЕNТЕR или должно быть освобождено в блоке LЕАVЕ. Значением операнда В по умолчанию является 1, что означает, что занят только один прибор.
Рис.22.2. Блоки ENTER и LEAVE с операндами А и В:
Операнд | Значение | Значение или результат по умолчанию |
А | Имя (символическое или числовое) многоканального устройства | Ошибка |
В | Число занимаемых приборов | 1 |
Представляется вполне естественным, что допускается занятие нескольких приборов единственным транзактом в блоке ЕNТЕR (и аналогично освобождение нескольких приборов единственным транзактом в блоке LЕАVЕ). Предположим, что транзакт моделирует корабль, а многоканальное устройство моделирует причал в порту. В зависимости от размера корабль может потребовать использования нескольких причалов.
GPSS по отношению к блоку ЕNТЕR реализует подход "все или ничего". Транзакт не может занимать приборы один за другим, пока не займет требуемое число приборов. Когда транзакт пытается войти в блок ЕNТЕR, интерпретатор проверяет, больше или равна доступная емкость многоканального устройства значению операнда В. Если результат проверки отрицателен, транзакт остается в том блоке, где он находился, и позднее снова будет пытаться войти в блок ЕNТЕR.
Рассмотрим теперь влияние параметра В на статистические данные, собираемые интерпретатором относительно многоканальных устройств. Когда транзакт входит в блок ЕNТЕR, для которого используется операнд В, интерпретатор проделывает следующие действия:
- "счетчик входов" многоканального устройства увеличивается на значение операнда В;
- "текущее содержимое" многоканального устройства также увеличивается на значение операнда В;
- "доступная емкость" многоканального устройства уменьшается на значение операнда В.
Подобным образом, при использовании операнда В в блоке LЕАVЕ и входе транзакта в этот блок выполняются следующие действия:
- "текущее содержимое" многоканального устройства уменьшается на значение операнда В;
- "доступная емкость" многоканального устройства увеличивается на значение операнда В.