|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Блоки, изменяющие порядок прохождения блоков сообщениямиОбычно интерпретатор пытается продвинуть сообщение к следующему по номеру блоку. Однако существуют блоки, которые позволяют изменять номер следующего блока. 4.3.4.1. Блок TRANSFER Блок TRANSFER имеет следующий формат: TRANSFER [<A>],[<B>],[<C>],[<D>] Блок TRANSFER является основным средством, позволяющим направить сообщение к любому блоку модели. Поле А задает режим выбора следующего блока, к которому должно перейти сообщение. Существуют следующие режимы работы блока TRANSFER: - безусловный (пробел); - статистический (.); - BOTH. Кроме того, операнд А может быть дробным числом, именем, положительным целым числом или СЧА. Поля В и С задают возможные значения номеров следующих блоков или их положение. Использование значений описано при рассмотрении определенных режимов выбора. Операнды могут быть именем, положительным целым числом или СЧА. Если поле В пусто, ассемблер записывает в нем номер блока, следующего за блоком TRANSFER. Безусловный режим выбора. Если операнд А пропущен, то блок TRANSFER работает в безусловном режиме. Входящее в блок TRANSFER сообщение переходит к блоку, указанному в поле В. Если сообщение в этот блок войти не может, попытка направить сообщение к какому-либо другому блоку не производится. Статистический режим выбора. Когда операнд А не является зарезервированным словом, блок TRANSFER работает в статистическом режиме выбора. Значение аргумента, записанного после точки (.) в поле А, рассматривается как трехзначное число, показывающее (в частях от тысячи), какой процент входящих в блок сообщений следует направить к блоку, указанному в поле С. Остальные сообщения направляются к блоку, указанному в поле В, или к следующему по номеру блоку, если операнд В пропущен. Для каждого сообщения выбирается один из двух возможных вариантов; после того как выбор сделан, второй вариант для этого сообщения не рассматривается. Пример: BCD TRANSFER.709,BLK1,BLK2 Из общего числа сообщений, входящих в блок BCD, в среднем 0,709 будут пытаться войти в блок BLK2. Остальные 0,291 будут пытаться войти в блок BLK1. Режим BOTH. Если в поле А стоит зарезервированное слово ВOTH, блок TRANSFER работает в режиме BOTH. В этом режиме каждое входящее сообщение сначала пытается перейти к блоку, указанному в поле В. Если это сделать не удается, сообщение пытается перейти к блоку, указанному в поле С. Если сообщение не сможет перейти ни к тому, ни к другому блоку, оно остается в блоке TRANSFER и будет повторять в том порядке попытки перехода при каждом просмотре списка текущих событий до тех пор, пока не сможет выйти из блока TRANSFER.
4.3.4.2. Блок TEST Блок TEST имеет следующий формат: TEST <X> <A>,<B>,[<C>] Блок TEST определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком сообщений, проверяя выполнение алгебраических отношений между значениями СЧА, заданных в полях А и В. Операнды А и В – сравниваемые величины, которые могут быть именем, любым целым числом или СЧА. Если в полях А и В заданы СЧА, то они должны быть записаны как СЧАj (например: очередь Q1). Необходимо присвоить им номера в начале программы с помощью оператора EQU. Во вспомогательном поле операции оператора описания блока TEST <X> – записывается один из шести условных операторов: - 'L' – меньше. Отношение истинное, если значение аргумента поля А меньше значения аргумента поля В; - 'LE' – меньше или равно. Отношение истинное, если значение аргумента поля А меньше или равно значению аргумента поля В; - 'E' – равно. Отношение истинное, если значения обоих аргументов равны; - 'NE' – не равно. Отношение истинное, если значения аргументов полей А и В не равны; - 'G' – больше. Отношение истинное, если значение аргумента поля А больше значения аргумента поля В; - 'GE' – больше или равно. Отношение истинное, если значение аргумента поля А больше или равно значению аргумента поля В. Если отношение СЧА, заданных в полях А и В, истинно, сообщение переходит к следующему блоку. Если отношение ложно, сообщение переходит к блоку, номер которого задан полем С. C – номер блока для входящего сообщения, если отношение величин, заданных в полях А и В, ложно. Операнд C может быть именем, положительным целым числом или СЧА. Блок TEST может работать в двух режимах: 1) в режиме безусловного входа. Если в поле С задан номер следующего блока, сообщения никогда не задерживаются на входе блока TEST. Если заданное в блоке TEST отношение истинно, то сообщение пытается перейти к следующему по номеру блоку. Если отношение ложно, сообщение пытается перейти к блоку, заданному полем С. Выбор следующего блока производится только один раз (в момент входа сообщения в блок TEST); 2) в режиме условного входа. Если поле С блока TEST пусто (т.е. не указан альтернативный выход), сообщения не могут войти в блок TEST до тех пор, пока условия не изменятся таким образом, что отношение будет истинно. Если отношение истинно, сообщение входит в блок TEST и пытается перейти к следующему по номеру блоку. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |