Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комплекс по МСиП 2014 / Пособие GPSS World.doc
Скачиваний:
298
Добавлен:
15.04.2015
Размер:
1.37 Mб
Скачать

4.18. Проверка числовых выражений. Блок теsт

Сравнение СЧА может быть выполнено с помощью блока ТЕSТ (ПРОВЕРИТЬ).

Его формат:

ТЕSТ Х А,В[,С]

Таблица 4.43

Операнд

Значение

Результат по умолчанию

А

СЧА

Ошибка

В

СЧА

Ошибка

С

Имя блока, в который переходит транзакт при условии, что ответ на вопрос, подразумеваемый оператором отношения, отрицательный

При отсутствии операнда С проверку выполняют в режиме отказа

Х

Вспомогательный оператор, который представляет собой оператор отношения, использующийся при проверке

Значение оператора отношения:

Вопрос оператора отношения:

G

А больше В?

GЕ

А больше или равно В?

Е

А равно В?

А не равно В?

LЕ

А меньше или равно В?

L

А меньше В?

Операнды А и В – имена СЧА, которые сравниваются. Вспомогательный оператор Х указывает способ сравнения этих двух СЧА друг с другом.

Пример 4.40

Режим отказа

ТЕSТ LЕ Q1,Q2

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

Пример 4.41

Режим условного перехода

ТЕSТ LЕ Q1,Q2,ZНVS

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

Пример 4.42

ТЕSТ L F$SСАNNЕR,X$МАX_UТIL,LLL

SЕIZE SСАNNЕR

LLL QUEUE Q_SСАNNЕR2

Если устройство SСАNNЕR имеет коэффициент загрузки меньше, чем значение сохраняемой величины МАХ_UТIL, то транзакт идет на обслуживание этим устройством, в противном случае – переходит к блоку с меткой LLL.

Пример 4.43

Пусть в точке модели DISРАТСНЕR необходимо удалить те транзакты, которые находились в модели больше, чем 100 ед. модельного времени. Для этого в модели можно использовать такие блоки:

GЕNЕRАТЕ 18,6

DISРАТСНЕR ТЕSТ L М1,100,КILL

КILL ТЕRMINATE

4.20. Косвенная адресация

Ранее были рассмотрены прямые способы адресации, когда:

1) номер объекта задается константой

QUEUE 2 ;Стать в очередь 2

SЕIZE 1 1 ;Занять устройство 1

2) номер объекта задается СЧА

LЕАVЕ Р1 ; Освободить МКУ с номером, задаваемым параметром 1

Адресация может быть относительной и по отношению к самому блоку. Это осуществляется при помощи записи *+/– п. Например,

ТRАNSFЕR ,*+2

В этом случае сам блок ТRАNSFЕR является ориентировочным блоком. Транзакт пытается войти во второй, относительно блока ТRАNSFЕR, блок.

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

Общий формат косвенной адресации:

СЧА*СЧАj или СЧА*СЧА<имя>

Там, где допустимо использование СЧА, обычно могут использоваться и СЧА*СЧА.

При использовании косвенной адресации параметр Р может опускаться.

Пример 4.46

SЕIZE Р*Х1

Занять устройство, номер которого содержится в параметре транзакта, а номер параметра определяется значением ячейки X1.

SАVЕVALUE 1,Х*Р2

Поместить в ячейку с номером 1 значение, содержащееся в ячейке, номер которой определяется параметром 2.

Пример 4.47

4 FUNCTION RN1,DЗ ;Функция распределения типов сообщений 0.2,1/0.5,2/0.999999,3

1 FUNCTION RN2,С20 ;Функция распределения числа символов

; сообщения типа 1

2 FUNCTION RNЗ,С20 ;Функция распределения числа символов

; сообщения типа 2

3 FUNCTION RN4,С20 ;Функция распределения числа символов

; сообщения типа 3

GЕNЕRАТЕ 100,10

АSSIGN 1,FN4 ; Определение типа сообщения

АSSIGN 2,FN*Р1 ; Определение числа символов сообщения

В данной модели предполагается, что через некоторый узел сети проходят информационные сообщения трех типов, причем каждый из них характеризуется своим распределением числа символов. В модели первый параметр транзакта содержит тип сообщения, а второй параметр – число символов сообщения.

При использовании косвенной адресации при обращении к устройствам, МКУ или функциям через параметры приходится применять числовые значения имен. Транслятор ОР58/РС на этапе компиляции сам присваивает именам числовые значения, однако, при этом пользователь не контролирует такое присвоение. Для того, чтобы не возникали конфликты между числовыми значениями имен, присвоенных транслятором, и именами, заданных пользователем, необходимо использовать простое правило в модели использовать имена либо только числовые, либо только символьные.

Назначение именам числовых значений осуществляется с помо щью оператора ЕQU (аналог #define в языке программирования Си).

Пример 4.48

Необходимо занять МКУ, номер которого определяется в пер-| вом параметре транзакта. По логике функционирования модели занимается один из двух МКУ: SECTION или SЕСТION_В.

SЕСТIONЕQU 1

SЕСТION_В ЕQU 2

SЕСТIONSТОRАGЕ 2

SЕСТIONSТОRАGЕ 3

АSSIGN 1,1

АSSIGN 1,2

ЕNТЕR Р1