Списки пользователя. Блоки LINK и UNLINK




 

Блок LINK (ВНЕСТИ В СПИСОК) собирает транзакты из CTC и помещает их в СП. Таким образом, интерпретатор их не просматривает и не перемещает по блокам модели до тех пор, пока пользователь не возвратит их в модель.

 

Формат блока LINK:

LINK <A>,<B>,[<C>]

 

Поля операндов имеют следующий смысл:

­ <A> – операнд <А> задает номер или имя СП, в который будет помещен транзакт. Операнд <А> может быть положительным целым, именем, CЧA;

­ <B> – задает алгоритм упорядочивания СП, операнд <В> может быть LIFO, FIFO, целым, СЧА. Допустимые значения операнда <В>:

§ FIFO – вошедший транзакт помещается в конец СП,

§ LIFO – вошедший транзакт помещается в начало СП,

§ номер параметра – входящие в СП транзакты располагаются в соответствии со значением указанного параметра,

§ PR – приоритет транзакта (транзакт помещается в список в соответствии c приоритетом),

§ M1 – время нахождения транзакта в модели (транзакт помещается в список в соответствии c временем нахождения транзакта в модели);

­ <C> – параметр, в котором запоминаются номера копий транзактов.

 

Операнд <C> указывает альтернативный выход, который используется при описании разных ситуаций, возникающих в очередях. Операнд <C> может быть именем, положительным целым, СЧА.

Если операнд <C> не задан, индикатор, связанный c заданным СП, устанавливается в положение «1». Это приводит к тому, что все транзакты, безусловно входящие в блок, заносятся в СП, определенный операндом <А>, в порядке, который задан операндом <В>.

Если операнд <C> задан, проверяется индикатор СП. Если индикатор списка установлен в положение «1», вошедший транзакт заносится в СП в порядке, заданном операндом <В>. Если же индикатор списка установлен в положение «0», он переводится в положение «1», и вошедший транзакт перемещается к блоку, заданному в операнде <C>.

 

ПРИМЕР 27.

LINK LIST,FIFO

Транзакт, вошедший в блок, помещается в конец списка c именем LIST.

 

Блок UNLINK (ВЫВЕСТИ ИЗ СПИСКА). Блок UNLINK удаляет транзакты из СП. После этого интерпретатор GPSS возобновляет их движение по модели.

 

Формат блока UNLINK:

UNLINK [<X>] <A>,<B>[,<C>][,<D>][,<E>][,<F>]

 

Операнд <А> задает список пользователя (СП), из которого удаляются один или несколько транзактов. Операнд <А> может быть именем, положительным целым, СЧА.

В операнде <В> указывается номер блока, к которому переходят удаляемые из списка транзакты. Операнд <В> может быть именем, положительным целым, СЧА.

Операнд <C> задает число транзактов, удаляемых из СП (счетчик удалений). Операнд <C> может быть именем, положительным целым, СЧА или «ALL» (означает удаление всех транзактов).

Операнд <D> может быть именем, целым, СЧА или «ВАСК». Действия, выполняемые при вхождении транзакта в блок UNLINK, зависят от того, на что ссылается операнд <D>. В операнде <D> могут быть указаны номер параметра, булева переменная или слово «ВАСК».

Номер параметра. Если операнд <E> пропущен, значение заданного параметра вошедшего транзакта сравнивается со значением этого же параметра транзактов СП. Если <E> не пропущен, значение заданного параметра транзактов СП сравнивается со значением СЧА из операнда <E>. В обоих случаях транзакты, удовлетворяющие заданному отношению, будут удалены из списка и направлены в блок, указанный в операнде <В>.

Булева переменная BVj вычисляется отдельно для каждого транзакта из СП. Если для транзакта значение BVj=l, он удаляется из СП (количество удаляемых транзакгов не может превышать значения операнда <C>). Если BVj=0 для всех транзактов списка, вошедший транзакт пытается переместиться в блок, заданный в операнде <F>. Если операнд <F> пропущен, транзакт пытается перейти в следующий по номеру блок.

Если в операнде <D> задана булева переменная, операнд <E> должен быть пустым. Если булева переменная BVj имеет ссылку на какой-либо параметр, то эта ссылка относится к параметрам транзактов из списка, а не к входящему в блок UNLINK транзакту.

Слово «ВАСК». Из указанного списка, начиная c его конца, будет исключено столько транзактов, сколько задано операндом <C>. Операнд <E> в этом случае должен быть пустым.

Операнд <E> содержит СЧА, значение которого сравнивается со значением параметра транзактов СП (номер параметра указан в операнде <D>). Операнд <E> может быть именем, целым, СЧА.

Операнд <F> задает номер следующего блока для того транзакта, который входит в блок UNLINK в случаях, когда соответствующий СП пустой или не выполнено заданное отношение, или же указанная в операнде <D> булева переменная равна нулю для всех транзактов списка (т.е. в случае, когда из СП нельзя ничего удалить). Операнд <F> может быть именем, положительным целым, СЧА.

 

Операторы отношения, которые записываются во вспомогательном операнде X, определяют, какое условие (отношение) будет рассматриваться. Если этот оператор не задан, предполагается отношение равенства E.

Операторы отношения могут быть следующими:

G (больше) – отношение истинно, если значение параметра, заданного в операнде <D>, больше значения, заданного в операнде <E>;

GE (больше или равно) – отношение истинно, если значение параметра, заданного в операнде <D>, больше значения, заданного в операнде <E>, или равно ему;

L (меньше) – отношение истинно, если значение параметра, заданного в операнде <D>, меньше значения, заданного в операнде <E>;

LE (меньше или равно) – отношение истинно, если значение параметра, заданного в операнде <D>, меньше значения, заданного в операнде <E>, или равно ему;

E (равно) – отношение истинно, если значение параметра, заданного в операнде <D>, равно значению, заданному в операнде <E>;

NE (не равно) – отношение истинно, если значение параметра, заданного в операнде <D>, не равно значению, заданному в операнде < E>.

 

ПРИМЕР 28.

UNLINK LIST,MET,1

 

Первый транзакт из СП c именем LIST помещается в блок c меткой MET. Он заносится в CTC после транзактов c таким же приоритетом. Транзакт, вошедший в блок UNLINK, переходит в следующий блок.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-01-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: