Mit1 SEIZE Kan1

Якщо ОКП Kan1 зайнятий, блок GATE пропускає транзакт до блоку TEST. Якщо поточний вміст списка користувача з іменем King є меншим за задану ємність Buf, то транзакт проходить в список користувача. В протилежному випадку він спрямовується до блоку з міткою Mit2. Якщо ОКП незайнятий, транзакт скеровується до блоку SEIZE з міткою Met1 і займає вільний ОКП Kan1.

Вивід транзактів із списку користувача. Блок UNLINK. Цей блок вилучає транзакти із списку користувача і повертає їх у список поточних подій. Блок UNLINK (вивести із списку) має наступний форимат:

[назва] UNLINK X А,В,C,[D],[E],[F]

Операндом А вказується назва або номер списка користувача. Операнд В вказує на мітку блоку, в який переходять виведені із списку користувача транзакти. Операндом С вказується число транзактів, що виводяться зі списку користування. Операнди А, В, С можуть бути назвою і додатнім цілим числом, СЧА або СЧА*СЧА. Окрім того, в операнді С використовується ключове слово ALL для виведення всіх транзактів списку. За замовчуванням операнд С приймає значення ALL.

Спосіб та умови виведення транзактів із вписку користувача визна­чають операнди D і E разом з умовним оператором Х. Значення оператора Х ті ж, що й описані в блоці TEST. За замовчуванням умовний оператор Х приймає значення Е (рівність). Якщо операнди D і E не використовуються, то умовний оператор Х не вказується. В цьому випадку кількість транзактів, що виводяться з початку списку, обов’язково визначаються операндом С.

Операнд D може бути: булевою змінною; номером параметра транзакта; ключовим словом BACK.

Якщо операнд D є булевою змінною, то операнд Е і оператор Х не використовуються. Булева змінна обчислюється відносно транзакту, який перебуває у списку користувача. Якщо результат не нуль, тобто умова виведення виконується, транзакт вилучається зі списку користування. Кількість таких транзактів визначається операндом С. Однак може бути вилучено менше транзактів, ніж вказано операндом С (за числом не нульових результатів обчислення булевої змінної). Крім того, і тразактів у списку користувача може бути менше, ніж вказано операндом С.

Якщо операндом D вказане ключове слово BACK, а операнд Е і умовний оператор Х не використовуються, то транзакти виводяться з кінця списку користувача. Їх кількість визначається обов’язково операндом С.

Операнд D може обчислюватися відносно транзакту, який перебуває у списку користувача, і використовуватися як номер параметра, значення якого порівнюється із результатом обчислення операнда Е за допомогою умовного оператора Х. Якщо операнд Е не використовується,то значення параметра транзакту із списку користувача порівнюється зі значенням такого ж параметра вихідного транзакту. Якщо вони рівні, транзакт вилучається із списку користувача. В цьому випадку кількість вихідних транзактів визначається операндом С.

Детальний аналіз функціонування блоку UNLINK залежно від неявності операндів A – F наведено в [1]. Операндом F задається назва блоку, куди переходить транзакт, що виходить із блоку UNLINK, якщо із списку користувача не виведений ні один транзакт. Якщо операнд F не використовується, вихідний транзакт переходить у наступний блок незалежно від кількості виведених транзактів. Наприклад, блок


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: