Блок управляет потоком транзактов с помощью логических операторов. Блок GATE, как и блок TEST, не изменяет никаких атрибутов транзактов. Он определяет номер следующего блока, к которому должен перейти транзакт из блока GATE. Блок GATE может задержать транзакт на входе, если не задан альтернативный выход.
GATE X А,[В]
А – имя или номер объекта, для которого производится проверка. Операнд А может быть именем, положительным целым числом, СЧА или СЧА*СЧА.
В – номер следующего блока для входящего транзакта, если логический оператор имеет значение «ложь». Операнд В может быть именем, положительным целым числом, СЧА или СЧА*СЧА.
В дополнительном операторе X задается один из следующих логических операторов:
1. Логические операторы, связанные с устройствами:
NU - устройство j, заданное в операнде А, свободно;
U - устройство j, заданное в операнде А, занято
N1 - устройство j, заданное в операнде А, не прервано;
I - устройство j, заданное в операнде А, обслуживает прерывания;
FV - устройство j, заданное в операнде А, доступно;
|
|
FNV - устройство j заданное в операнде А, не доступно.
2. Логические операторы, связанные с МКУ:
SE - МКУ j, заданное в операнде А, пустое (S[j]=0);
SNE - МКУ j, заданное в операнде А, не пустое (S[j]<>0);
SF - МКУ j, заданное в операнде А, заполнено (R[j]=0);
SNF - МКУ j, заданное в операнде А, не заполнено (R[j] <>0);
SV - МКУ j, заданное в операнде А, доступно;
SNV - МКУ j, заданное в операнде А, не доступно.
3. Логические операторы, связанные с логическими ключами:
LS - логический ключ j, заданный в операнде А, включен;
LR - логический ключ j, заданный в операнде А, выключен.
Блок GATE, как и блок TEST, может работать в режимах безусловного и условного вхождения.
В режиме безусловного вхождения транзакт никогда не задерживается на входе блока GATE. Если заданный логический оператор имеет значение «истина», транзакт пытается перейти к следующему по номеру блоку. Если логический оператор имеет значение «ложь», то транзакты будут пытаться перейти к блоку, номер которого задан в операнде В блока GATE. Выбор следующего блока производитсяодин раз в момент вхождения транзакта в блок GATE.
В режиме условного вхождения, если операнд В блока GATE пустой (альтернативный выход не задан), транзакты не смогут войти в блок GATE до тех пор, пока указанный в этом блоке логический оператор не будет иметь значение «истина».