БЛОКИ, ИЗМЕНЯЮЩИЕ ПОРЯДОК ПРОХОЖДЕНИЯ БЛОКОВ СООБЩЕНИЯМИ |
Блок TRANSFER имеет следующий формат:
TRANSFER [A],[B],[C],[D]
Блок TRANSFER является основным средством, позволяющим направить сообщение к любому блоку модели.
Поле А задает режим выбора следующего блока, к которому должно перейти сообщение.
Существуют следующие режимы работы блока TRANSFER:
- безусловный (пробел);
- статистический (.);
- BOTH;
- ALL;
- PICK;
- функция (FN);
- параметр (Р);
- подпрограмма (SBR);
- SIM.
Поля В и С задают возможные значения номеров следующих блоков или их положение. Использование значений описано при рассмотрении определенных режимов выбора. Операнды могут быть именем, положительным целым числом, СЧА или СЧА*<параметр>. Если поле В пусто, ассемблер записывает в нем номер блока, следующего за блоком TRANSFER.
Статистический режим выбора – когда операнд А не является зарезервированным словом, блок TRANSFER работает в статистическом режиме выбора. Значение аргумента, записанного после точки (.) в поле А, рассматривается как трехзначное число, показывающее (в частях от тысячи), какой процент входящих в блок сообщений следует направить к блоку, указанному в поле С. Остальные сообщения направляются к блоку, указанному в поле В, или к следующему по номеру блоку, если операнд В пропущен. Для каждого сообщения выбирается один из двух возможных вариантов; после того как выбор сделан, второй вариант для этого сообщения не рассматривается.
Блок LOOP имеет следующий формат:
LOOP A,[B]
Блок LOOP используется для организации циклов, т.е. для управления числом повторений определенной последовательности блоков в модели. Сообщение никогда не задерживается на входе блока LOOP.
Блок TEST имеет следующий формат:
TEST X A,B,[C]
Блок TEST в противоположность блоку LOOP, не изменяет никаких атрибутов сообщения; он определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком сообщений, проверяя выполнение алгебраических отношений между значениями СЧА, заданных в полях А и В.
Операнды А и В - сравниваемые величины, которые могут быть именем, любым целым числом, СЧА или СЧА*<параметр>.
Во вспомогательном поле операции оператора описания блока TEST - - записывается один из шести условных операторов:
- 'L' - меньше. Отношение истинное, если значение аргумента поля А меньше значения аргумента поля В;
- 'LE' - меньше или равно. Отношение истинное, если значение аргумента поля А меньше или равно значению аргумента поля В;
- 'E' - равно. Отношение истинное, если значения обоих аргументов равны;
- 'NE' - не равно. Отношение истинное, если значения аргументов полей А и В не равны;
- 'G' - больше. Отношение истинное, если значение аргумента поля А больше значения аргумента поля В;
- 'GE' - больше или равно. Отношение истинное, если значение аргумента поля А больше или равно значению аргумента поля В.
Если отношение СЧА, заданных в полях А и В, истинно, сообщение переходит к следующему блоку. Если отношение ложно, сообщение переходит к блоку, номер которого задан полем С.
C - номер блока для входящего сообщения, если отношение величин, заданных в полях А и В, ложно. Операнд C может быть именем, положительным целым числом, СЧА или СЧА*<параметр>.
Блок TEST может работать в двух режимах:
1) в режиме безусловного входа. Если в поле С задан номер следующего блока, сообщения никогда не задерживаются на входе блока TEST. Если заданное в блоке TEST отношение истинно, то сообщение пытается перейти к следующему по номеру блоку. Если отношение ложно, сообщение пытается перейти к блоку заданному полем С. Выбор следующего блока производится только один раз (в момент входа сообщения в блок TEST);
2) в режиме условного входа. Если поле С блока TEST пусто (т.е. не указан альтернативный выход), сообщения не могут войти в блок TEST до тех пор, пока условия не изменятся таким образом, что отношение будет истинно. Если отношение истинно, сообщение входит в блок TEST и пытается перейти к следующему по номеру блоку.
Отношения в блоках TEST проверяются интерпретатором при каждом просмотре сообщения, задержанного на входе блока TEST, работающего в режиме условного входа. Задержанные сообщения обычно помещаются в списки задержки и не обрабатываются интерпретатором до тех пор, пока не изменится блокирующее условие. Сообщения, задержанные блоками TEST в режиме условного входа в списки задержки не помещаются, следовательно использование таких блоков TEST может значительно увеличить время счета модели. |
Опубликовал Kest
January 18 2010 21:28:06 ·
0 Комментариев ·
6046 Прочтений ·
|
|