LOGIC Х А
Операнд А – номер логического ключа; он может быть именем, положительным целым, СЧА или CЧA*CЧA. Когда транзакт входит в блок LOGIC,положение логического ключа, номер которого задан в операнде А, изменяется в зависимости от значения вспомогательного оператора Х следующим образом: S – логический ключ устанавливается в положение «Включен»; R – логический ключ устанавливается в положение «Выключен»; I – логический ключ инвертируется, то есть положение его изменяется на противоположное. Логический ключ имеет СЧА LS<номер ключа>или LS$<HMH ключа>,который возвращает значение 1, если ключ в положении «Включен», и 0 – если в положении «Выключен». Для изменения направления движения сообщений в зависимости от положения логических ключей используются блоки GATE LR и GATE LS Блоки GATE LR, GATE LS проверяют положение логического ключа. В операнде В задается номер блока, к которому переходит транзакт, если вспомогательный оператор Х имеет значение «ложь». Если значение логического оператора – «истина», транзакт переходит к следующему по порядку блоку. Если операнд В пустой, блок GATE LR (GATE LS) работает в режиме условного вхождения, если заполнен – в режиме безусловного вхождения. В режиме условного вхождения транзакты могут войти в блок GATE только в том случае, если логический оператор (LRj или LSj) имеет значение «истина». Если значение логического оператора – «ложь», транзакт помещается в список задержки и не обрабатывается интерпретатором до тех пор, пока значение не станет истинным. Единственным исключением являются транзакты, находящиеся в блоке TRANSFER BOTH (или ALL). Когда потом какой-нибудь другой транзакт проходит блок LOGIC,изменяющий состояние соответствующего ключа, и присваивает указанному в блоке GATE логическому оператору значение «истина», все транзакты, находящиеся в списке задержки, активизируются. После этого интерпретатор, просматривая CTC, получает возможность переместить один или несколько транзактов (включая и те, что находятся в блоке TRANSFER BOTH или ALL) в блок GATE LR (GATE LS), работающий в режиме условного вхождения. Блок GATE. Блок GATE управляет потоком транзактов c помощью логических операторов. Блок GATE,как и блок TEST, не изменяет никаких атрибутов транзактов. Он определяет номер следующего блока, к которому должен перейти транзакт из блока GATE. Блок GATE может задержать транзакт на входе, если не задан альтернативный выход. Блок GATE имеет такой формат: GATEX A,|B| Операнд А содержит имя или номер объекта, для которого производится проверка. Операнд А может быть именем, положительным целым числом, СЧА или CЧA*CЧA. Операнд В содержит номер следующего блока для входящего транзакта, если логический оператор имеет значение «ложь». Операнд В может быть именем, положительным целым числом, СЧА или CЧA*CЧA. Если операнд В определен, то он должен содержать номер блока, допустимый для текущей модели. В дополнительном операторе Х задается один из следующих логических операторов: 1. Логические операторы, связанные c устройствами: NU – устройство j, заданное в операнде А, свободно; U – устройство j, заданное в операнде А, занято (в результате выполнения транзактом блока SEIZE или PREEMPT); NI – устройство j, заданное в операнде А, не прервано; I – устройство j, заданное в операнде А, обслуживает прерывания; FV – устройство j, заданное в операнде А, доступно; FNV – устройство j, заданное в операнде А, не доступно. 2. Логические операторы, связанные c МКУ: SE – МКУ j, заданное в операнде А, пустое (S[j]=0); SNE – МКУ j, заданное в операнде А, не пустое (S[j]<>0); SF – МКУ j, заданное в операнде А, заполнено (R[t]=0); SNF – МКУ j, заданное в операнде А, не заполнено (R[j]<>0); SV – МКУ j, заданное в операнде А, доступно; SNV – МКУ j, заданное в операнде А, не доступно. 3. Логические операторы, связанные c транзактами: M – в блоке j, заданном в операнде А блока GATE,находится в состоянии синхронизации транзакт, принадлежащий тому же семейству, что и транзакт, который находится в блоке GATE или пытается войти в этот блок; NM – в блоке j, заданном в операндеАблока GATE,в состоянии синхронизации нет ни одного транзакта, принадлежащего тому же семейству, что и транзакт, который пытается войти в блок GATE. 4. Логические операторы, связанные c логическими ключами: LS – логический ключ j, заданный в операнде А, включен; LR – логический ключ j, заданный в операнде А, выключен. Режимы условного и безусловного входов в блок GATE. Блок GATE,как и блок TEST,может работать в режимах безусловного и условного вхождения. В режиме безусловного вхождения транзакт никогда не задерживается на входе блока GATE. Если заданный логический оператор имеет значение «истина», транзакт пытается перейти к следующему no номеру блоку. Если логический оператор имеет значение «ложь», го транзакты будут пытаться перейти к блоку, номер которого задан в операнде В блока GATE. Выбор следующего блока производится один раз в момент вхождения транзакта в блок GATE. В режиме условного вхождения, если операнд В блока GATE пустой (альтернативный выход не задан), транзакты не смогут войти в блок GATE до тех пор, пока указанный в этом блоке логический оператор не будет иметь значение «истина». Интерпретатор не проверяет значение логических операторов, за исключением операторов M и NM. В режиме условного вхождения задержанные транзакты находятся в списках задержки и, таким образом, исключаются из числа транзактов, обрабатываемых интерпретатором до тех пор, пока соответствующий логический оператор не примет значение «истина».
|