Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Вывод транзактов из списка пользователя в условном режиме
Для вывода одного или нескольких транзактов из списка пользователя и помещения их обратно в список текущих событий служит блок UNLINK (вывести из списка), имеющий следующий формат: [имя] UNLINK X A,B,C,[D],[E],[F] Операндом А указывается имя или номер списка пользователя. Операнд B - метка блока, в который переходят выведенные из списка пользователя транзакты. Операндом С указывается число выводимых транзактов или ключевое слово ALL для вывода всех находящихся в списке транзактов. По умолчанию, т. е. когда не используется операнд С, берется слово ALL. Операнды D и E вместе с условным оператором Х определяют способ и условия вывода транзактов из списка пользователя. Значения оператора Х те же, что и в блоке TEST. В случае, когда условный оператор Х должен использоваться, но не указан, по умолчанию он принимает значение Е (равенство). Если операнды D и Е не используются, не указывается и условный оператор Х. В этом случае транзакты выводятся с начала списка, а количество выводимых транзактов определяется обязательным операндом С. Операнд D может быть:
Если операнд D является булевой переменной, операнд Е и оператор Х не используются. Булева переменная вычисляется относительно транзакта, находящегося в списке пользователя. Если результат не нуль, т. е. условие вывода выполняется, транзакт выводится. Количество выводимых транзактов определяется операндом С. Однако выведено может быть и меньше, чем указано операндом С: по числу не нулевых результатов вычисления булевой переменной. Кроме того и транзактов в списке пользователя может быть меньше, чем указано операндом С. Если операндом D указано ключевое слово BACK, также операнд Е и условный оператор Х не используются, а транзакты выводятся с конца списка в количестве, определяемом обязательным операндом С. Если операнд D не булева переменная и не ключевое слово BACK, должны быть указаны операнд Е и условный оператор Х. Операнд D вычисляется относительно транзакта, находящегося в списке пользователя, и используется в качестве номера параметра, значение которого сравнивается с результатом вычисления операнда Е. Если операнд D задает параметр, а операнд Е не используется, значение параметра транзакта из списка пользователя сравнивается со значением такого же параметра выводящего транзакта. Если они равны, транзакт выводится из списка пользователя. И в этом случае количество выводимых транзактов определяется операндом С. Операндом F указывается имя блока, куда переходит транзакт, выходящий из блока UNLINK, если из списка пользователя не выведен ни один транзакт. Если операнд F не используется, выходящий транзакт переходит в следующий блок независимо от количества выведенных транзактов. Например, блок UNLINK 4,Apd,1 выводит из списка пользователя с номером 4 один транзакт с начала списка и направляет его в блок с меткой Apd. Блок UNLINK Otst,Mars,1,BACK выводит из списка пользователя с именем Otst один транзакт с конца списка и направляет его в блок с меткой Mars. Блок UNLINK E P$Wiw,App1,ALL,App2,P$App2,App3 выводит из списка пользователя, номер которого записан в параметре Wiw выводящего транзакта, и направляет в блок с меткой App1 все транзакты, содержимое параметра App2 которых равно содержимому одноименного параметра выводящего транзакта. Если таких параметров в списке не окажется, выводящий транзакт будет направлен в блок с меткой Аpp3, в противном случае - к следующему блоку. Примеры применения списков пользователя (блоков LINK и UNLINK) показаны в п. 6.3 и 6.7. Замечание. Отметим следующие особенности выполнения блока UNLINK. Во-первых, если операнды D и Е содержат ссылки на СЧА транзактов, операнд D вычисляется относительно транзак-тов в списке пользователя, а операнд Е - относительно активного транзакта. Во-вторых, после вывода транзактов из списка пользователя планировщик продолжает или начинает продвижение тран-закта с наивысшим приоритетом, а при равенстве приоритетов отдает предпочтение транзакту-инициатору вывода, т. е. первым выводит этот транзакт. Date: 2015-07-17; view: 354; Нарушение авторских прав |