Назначение. Блок
помещает активный транзакт в список пользователя.
Синтаксис.
LINK
A,B[, C]
Назначение операндов.
Операнд |
Назначение |
Значение |
Значение по умолчанию |
A |
Список
пользователя, в который должен быть помещен входящий в блок транзакт. |
Имя,
число, СЧА |
Обязательный параметр |
B |
Дисциплина
помещения нового транзакта в список пользователя. |
LIFO,
FIFO, СЧА транзакта |
Обязательный параметр |
C |
Имя блока, куда
переходит транзакт, если индикатор компоновки списка пользователя
находится в выключенном состоянии (сброшен) |
Имя,
число, СЧА |
Нет |
Особенности выполнения.
1.
При помещении транзакта в список он удаляется
из всех других списков, кроме групп транзактов и списков прерываний.
2.
Транзакт остается в списке пользователя до тех пор, пока какой-либо другой
транзакт не войдет в блок
UNLINK
и не считает его из списка.
3.
Если в операнде В указано
FIFO
(первым вошел, первым вышел), транзакты помещаются в
конец списка.
4.
Если
в операнде В указано
LIFO
(последним вошел, первым вышел), вновь прибывшие транзакты помещаются в начало
списка.
5.
Если в операнде В не используется
LIFO
или
FIFO,
то применяется СЧА транзакта -
PR,
M1
или Р. Может быть использована косвенная адресация. Если задано
PR,
транзакты помещаются в список пользователя в приоритетном порядке. Если задан
номер параметра, транзакт помещается в список пользователя позади тех
транзактов, значение соответствующего параметра которых меньше, чем у входящего
транзакта.
6.
Если
задан операнд С, то используется флаг «Индикатор компоновки». Если индикатор
компоновки списка пользователя выключен(сброшен) , блок
LINK
не поместит транзакт в список . Вместо этого транзакт перейдет к блоку
указанному в операнде С, после чего индикатор компоновки будет включен
(установлен). Следующие транзакты, входящие в блок
LINK,
будут помещены в список пользователя. Индикатор компоновки управляется блоками
LINK
и
UNLINK.
Он выключается (сбрасывается), когда блок
UNLINK
определяет, что список пользователя пуст.
Примеры
использования.
LINK
CHANNEL,FIFO
Транзакт, вошедший
в блок
LINK
, будет
добавлен в конец очереди с именем
CHANAL.
LINK
CHANNEL,
PR,
LABEL_CH
Если
список пользователя
CHANNEL
пуст (индикатор компоновки списка пользователя
выключен) ,транзакт перейдет к блоку с именем
LABEL_CH
и
индикатор компоновки будет включен. Следующие транзакты, входящие в блок
LINK,
будут помещены в список пользователя. Индикатор компоновки выключится, когда
блок
UNLINK
определит, что список пользователя пуст.
Назначение. Блок
считывает транзакты из списка пользователя.
Синтаксис.
UNLINK [X] A,B,[C],[D],[E],[F]
Назначение операндов.
Операнд |
Назначение |
Значение |
Значение по умолчанию |
X |
Операция
сравнения для операндов
D
и Е. |
Условная операция отношения |
E |
A |
Список
пользователя, из которого будет считан один или несколько транзактов.
|
Имя,
число, СЧА |
Обязательный операнд. |
B |
Блок, куда
переходят считанные транзакты. |
Имя,
число, СЧА |
Обязательный операнд |
C |
Максимальное
количество транзактов, которые будут считаны |
Имя,
число,
СЧА,
ALL |
ALL |
D |
Определяет условия считывания
транзактов из очереди |
Имя,
число, СЧА,
BACK |
Нет |
E |
Используется совместно с
операндом
D
и X
для определения условия считывания транзактов из списка |
Имя,
число,
СЧА |
Нет |
F |
|
|
Нет |
Особенности выполнения.
1.
Блок
UNLINK считывает транзакты из списка
пользователя и направляет их в указанный блок. Транзакты, которые необходимо
исключить, можно выбирать, также можно наложить ограничение на количество
исключаемых транзактов.
2.
Если транзакт входит в блок
UNLINK,
когда в списке нет транзактов, индикатор компоновки списка пользователя
сбрасывается.
3.
Можно ограничить число считываемых из списка
транзактов с помощью операнда С. Если операнд С опущен, то берется
ALL.
4.
Если операнды
D, Е и
условный оператор опущены, исключаются все транзакты с начала списка, пока
список не будет исчерпан, или не будет достигнут предел исключаемых транзактов
(операнд С).
5.
Операнд
D
может быть булевой переменной, номером параметра или словом «BACK».
Если операнд
D
является булевой переменной, он вычисляется относительно транзакта, находящегося
в списке пользователя, и если результат не нулевой, транзакт исключается.
Если в операнде
D
указано BACK,
транзакты исключаются, начиная с конца списка пользователя, пока не будет
достигнут предел.
В противном случае операнд вычисляется относительно
транзакта, находящегося в списке пользователя, и используется в качестве номера
параметра, значение которого возвращается членом списка пользователя, как
конечный результат. Это конечное значение сравнивается с результатом вычисления
операнда Е.
Если операнд
D
задает параметр, а Е не используется, параметр транзакта из списка пользователя
сравнивается с таким же параметром активного транзакта. Если они равны,
транзакт, находящийся в списке, считывается из списка.
6.
Операнд Е используется только в том случае, если
используется оператор отношения. В этом случае обязательно требуется операнд
D.
Список пользователя проверяется, начиная с начала. Если условие, заданное
оператором отношения, выполняется для операндов
D и Е,
исключается каждый транзакт, (вплоть до предела (операнд С)). Если в операнде Е
используется СЧА транзакта, он вычисляется относительно активного транзакта.
7.
оператор отношения используется для определения
соотношения между атрибутом транзакта (операнд
D) и
значением операнда Е. Если отношение выполняется, то транзакт считывается из
списка. В качестве оператора отношения могут быть использованы Е,
G,
GE,
L,
LE
или NE.
По умолчанию в качестве оператора отношения используется Е (равно).
8.
Операнд
F
используется для определения блока, куда будет направлен входящий транзакт, в
случае, если предел исключения транзактов (операнд С) не может быть достигнут,
или из списка пользователя не может быть удален ни один транзакт.
Примеры
использования.
UNLINK CHANNEL,
LABEL_CH,1
Считывается один
транзакт из начала списка
CHANNEL и
он направляется
в блок с
именем
LABEL_CH.
Транзакт,
вошедший в
UNLINK ,
переходит к следующему блоку
UNLINK
BUFFER,
FAC_2,1,BACK
Считывается из
списка пользователя с именем
BUFFER
один транзакт с конца списка и он направляется в блок с именем
FAC_2.
UNLINK E P$BUF,MET_1,ALL,COND,P$COND,MET_2
Считываются из
списка пользователя, номер которого записан в параметре
BUF
вошедшего транзакта, и направляются в блок с именем
MET_1
все транзакты, содержимое параметра
COND
которых равно содержимому одноименного параметра вошедшего транзакта. Если таких
транзактов в списке нет, то вошедший транзакт будет направлен в блок с именем
MET_2,
в противном случае - к следующему блоку. |