В блоках QUEUE и DEРАRТ существует возможность использования операнда В. На рис. 8.3 повторен рис. 8.1, но с использованием операнда В. Операнд В указывает на какую величину должен быть модифицирован счетчик содержимого очереди. По умолчанию для этого операнда подразумевается значение 1.
Рис.8.3. Блоки QUEUE и DEPART с операндами А и В:
Блоки QUEUE и DEPART с операндами А и В: | ||
Операнд | Значение | Значение или результат по умолчанию |
А | Имя (символическое или числовое) очереди | Ошибка |
В | Число элементов, на которое должно измениться значение счетчика содержимого очереди | Единица |
На рис.8.2 именно это значение и используется. Лучше всего проследить влияние операнда В при рассмотрении поведения интерпретатора во время выполнения подпрограмм блоков QUEUE и DЕРАRТ. При выполнении подпрограммы QUEUE происходит следующее:
1. Увеличивается значение счетчика входов соответствующей очереди на число, равное значению операнда В.
2. Увеличивается значение счетчика содержимого очереди на число, равное значению операнда В.
|
|
3. Транзакту приписывается имя очереди.
4. Транзакту приписывается текущее значение модельного времени.
Пп. 3 и 4 были пояснены ранее. Пп. 1 и 2 показывают влияние использования операнда В на значение содержимого очереди. Очевидно, что если в блоке QUEUE использован операнд В, отличный от 1, то значение счетчика входов не будет равно числу транзактов, вошедших в этот блок. Подобным образом, содержимое очереди не будет совпадать с числом транзактов, которые привязаны к данной очереди. Например, когда транзакт переходит в блок "QUEUE LINE,2", то и счетчик входов и счетчик содержимого очереди, названной LINЕ, увеличивается на 2, но суммарное число транзактов, присоединившихся к очереди, увеличивается только на 1, и число транзактов, находящихся в очереди, также увеличивается на 1.
Рассмотрим теперь выполнение подпрограммы DЕРАRТ.
1. Значение счетчика содержимого очереди уменьшается на число, определяемое операндом В.
2. Используя значение времени, приписанное транзакту при вхождении в блок QUEUE, определяют, является ли данный транзакт транзактом с нулевым вхождением. Если транзакт вызвал нулевое вхождение в очередь, то счетчик нулевых вхождений увеличивается на число, определяемое операндом В блока DЕРАRТ.
3. Связь транзакта, показывающая принадлежность к данной очереди, разрывается.
Для иллюстрации п. 2 предположим, что транзакт входит в блок "QUEUE QUEUE,5" и что в то же значение модельного времени он проходит в блок "DЕРАRТ QUEUE,5". По определению транзакт вызывает нулевое вхождение в очередь. Следует помнить, что интерпретатор обрабатывает элементы информации очереди в единицах содержимого, а не в транзактах. Следовательно, в этом примере число нулевых вхождений в очередь увеличится на 5, а не на 1.
|
|
В операндах В блоков QUEUE и DЕРАRТ значения, отличные от 1, употребляются в специальном случае. Очевидно, что собираемые статистические данные должны соответствующим образом быть интерпретированы. При печатании таких данных, как число входов, максимальное и среднее содержимое, текущее содержимое, а также число нулевых вхождений делается ссылка не на число транзактов, а на число элементов содержимого.
В заключение скажем, что существует однозначное точное соответствие между счетчиком содержимого очереди и числом транзактов, рассматриваемых как элементы очереди только в том случае, если операнд В блоков QUEUE и DЕРАRТ равен 1 (заданный в явном виде или по умолчанию). Необходимость использования операнда В возникает крайне редко, поэтому почти всегда существует точное однозначное соответствие. В наших примерах нет случаев возникновения необходимости использования операнда В в блоках QUEUE и DЕРАRТ.