Функциональная структура gpss
ФУНКЦИОНАЛЬНАЯ СТРУКТУРА GPSS
Система GPSS ориентирована на класс объектов, процесс функционирования которых можно представить в виде множества состояний и правил перехода из одного состояния в другое, определяемых в дискретной пространственно-временной области. Примерами таких объектов являются вычислительные системы, сети ЭВМ, системы передачи сообщений, транспортные объекты, склады, магазины, предприятия и т.п. В качестве формальных моделей таких объектов используют системы массового обслуживания, автоматы, стохастические сети, сети Петри и макросети, агрегаты и т.п.
В состав GPSS входят следующие типы объектов: транзакты, блоки, списки, устройства, памяти, логические ключи, очереди, таблицы, ячейки, функции, переменные. Любую модель на языке GPSS можно представить в виде комбинации компонентов, взятых из числа названных объектов. Модель имеет три уровня представления:
- верхний уровень,определяемый комбинацией функциональных основных объектов: устройств, памятей, ключей, очередей;
- средний уровень,представляемый схемой из типовых блоков, между которыми перемещаются транзакты;
- нижний уровень -уровень физической реализации языка GPSS в виде программ и наборов данных, составляющих основу моделирующей системы.
БЛОКИ
Разработчик конструирует модель из блоков, прибегая, как правило, к наглядной форме ее отображения в виде блок-схемы. Для удобства графического представления модели каждый блок GPSS имеет принятое стандартное обозначение. Построенная схема является одновременно программой на языке GPSS. Для ее ввода в ЭВМ необходимо последовательность блоков представить в виде списка операций, добавив к названиям блоков требуемые операнды.
Каждый блок GPSS имеет входы и выходы, с помощью которых осуществляется их связь в модели. Существуют два особых блока: GENERATE, имеющий только выход, и TERMINATE, имеющий только вход. Через блок GENERATE транзакты вводятся в модель. Блок TERMINATE удаляет транзакты из модели. Любую модель на языке GPSS можно представить в виде совокупности блоков (рис. 1.1).
Ниже дано описание функциональных основных объектов GPSS.
ТРАНЗАКТЫ
Функционирование объекта отображается в модели в виде перемещения транзактов от блока GENERATE в блок TERMINATE через промежуточные блоки. Транзакты, или сообщения являются абстрактными подвижными элементами, которые могут моделировать различные объекты реального мира: сообщения, программы, транспортные средства, людей и т.п. Перемещаясь между блоками модели, транзакты вызывают (и испытывают) различные действия. Возможны их задержки в некоторых точках модели, изменения маршрутов и направлений движения, расщепление транзактов на несколько копий и т.п. С каждым транзактом связан упорядоченный набор данных. Он включает номер транзакта; номер блока, в котором в данный момент находится транзакт; номер следующего блока; время перехода в следующий блок; приоритет, характеризующий очередность обработки транзактов в определенных случаях; а также набор параметров, с помощью которых каждому транзакту можно присвоить числовые значения, выражающие желаемые свойства или характеристики моделируемых объектов: вес, скорость, объем, цвет, время обработки и т.п.
Все объекты GPSS имеют числовые характеристики, называемые стандартными числовыми атрибутами (СЧА). Транзакты имеют четыре СЧА:
PRI - приоритет;
Plj - параметр с номером j;
M$1 - время прохождения транзактом участка модели;
MPSj - промежуточное время, записываемое в параметре Pj;
X$j - номер транзакта.
ТРАНЗ 1ИЗ 2В 3 ВРЕМЯ 54 TERMINATIONS ТО GO 1
которые означают: транзакт номер 1 выходит из блока 2 в блок 3 в момент времени 54 единиц, значение счетчика завершений равно 1 (см. 2.1.32, 2.3.6 )
СПИСКИ
Списки относятся к элементам внутренней организации системы GPSS. Они представляют собой структуры данных, в которых размещается полная информация о транзактах. С помощью списков обеспечивается внутренняя логика работы моделирующей системы.
Список будущих событий содержит транзакты, которые смогут начать движение в модели в будущие моменты времени. Это те транзакты, для которых моменты начала движения определены в блоках GENERATE и ADVANCE.
В список текущих событий входят транзакты, которые должны перемещаться в модели в текущий момент модельного времени. Если при этом транзакт входит в блок ADVANCE с ненулевым временем задержки, то он перемещается в список будущих событий.
В список прерываний помещаются транзакты, обслуживание которых прервано блоком PREEMPT. После снятия прерывания в блоке RETURN транзакты вновь возвращаются в список будущих событий. На рис. 1.2 представлена структура списка GPSS/PC.
В список синхронизации помещаются транзакты, ожидающие объединения с другими транзактами в блоках GATHER и ASSEMBLE или находящиеся в блоках MATCH. После выполнения условий синхронизации транзакты возвращаются в список текущих событий. Кроме рассмотренных списков, обработка которых происходит без участия программиста, в GPSS/PC существуют списки пользователя, управление которыми осуществляется с помощью блоков LINK и UNLINK. Списки пользователя имеют стандартные числовые атрибуты, к которым можно обращаться внутри модели:
СН$j - текущее число транзактов в списке j;
CA$j - среднее число транзактов в списке j;
CM$j - максимальное число транзактов в списке j;
CCSj - общее число входов транзактов в список j;
CT$j - среднее время пребывания транзакта в списке j.
УСТРОЙСТВА
Устройства моделируют объекты, в которых может происходить обработка транзактов. Как правило, она связана с затратами времени. Особенность устройств состоит в том, что каждое из них в данный момент времени может быть занято лишь одним транзактом. Существует аналогия между устройствами GPSS и каналами систем массового обслуживания. В GPSS имеется возможность моделировать прерывания устройств. Существуют средства логической проверки состояния устройств. Каждое из действий с устройством отображается в модели определенным блоком.
Захват и освобождение устройства моделируются соответственно блоками SEIZE и RELEASE. Для проверки состояния устройств используют GATE. Прерывание моделирует блок PREEMPT, снятие прерывания - блок RETURN.
С устройствами связаны следующие СЧА:
F$j - состояние устройства с номером j: О - если устройство свободно, и 1 - если
устройство занято;
FR$j - коэффициент использования устройства j;
FCSj - число входов в устройство j;
FT$j - среднее время использования устройства j одним транзактом.
Устройства имеют также стандартные логические атрибуты (СЛА), каждый из которых может принимать одно из двух значений: "ИСТИНА" или "ЛОЖЬ".
U - устройство занято; NU - устройство свободно;
1 - устройство прервано; NI - не прервано.
Проверка состояния устройства осуществляется блоком GATE, который в зависимости от значения проверяемого СЛА либо беспрепятственно пропускает транзакты (если СЛА = "истина"), либо задерживает их или направляет по другому маршруту (если СЛА = "ложь").
ПАМЯТИ
Памяти служат для моделирования объектов, обладающих определенной емкостью. Памяти моделируются блоками ENTER и LEAVE. Входящий в блок ENTER транзакт занимает определенную часть памяти. При входе транзакта в блок LEAVE память освобождается. Емкость памяти задают с помощью оператора STORAGE, который не является блоком GPSS и относится к числу служебных карт.
Памяти имеют следующие стандартные числовые атрибуты:
S$j - емкость памяти j;
R$j - свободный объем памяти j;
SR$j - коэффициент использования памяти j;
SM$j - максимальное заполнение памяти j;
SA$j - среднее заполнение памяти j;
SC$j - число входов в память j;
ST$j - среднее время пребывания транзакта в памяти j.
Памяти имеют также стандартные логические атрибуты, которые используются для проверки состояния памяти:
SE$j - память j пуста;
NE$j - память j не пуста;
SF$j - память j заполнена;
SNF$j - память j не заполнена.
Проверка состояния памяти осуществляется блоком GATE.
ЛОГИЧЕСКИЕ КЛЮЧИ
Для представления в модели коммутируемых объектов с двумя состояниями ("ВКЛЮЧЕНО" - "ВЫКЛЮЧЕНО" ) используют логические ключи, моделируемые блоками LOGIC и GATE. При входе транзакта в блок LOGIC происходит срабатывание соответствующего ключа. Ключ
может быть включен (S), выключен (R) или переключен (1). Ключи не имеют СЧА. Их состояние определяется стандартными логическими атрибутами:
LS$j - ключ j включен; LR$j - ключ j выключен.
Проверка состояния ключа осуществляется блоком GATE.
ОЧЕРЕДИ
Транзакты в процессе движения могут задерживаться перед блоками, вход в которые в данных условиях невозможен. Примерами таких блоков из числа рассмотренных выше являются SEIZE (если ранее вошедший в этот блок транзакт не вошел в блок RELEASE), ENTER (если текущий объем памяти равен первоначально заданному), GATE (если в этом блоке не указан альтернативный выход и проверяемое условие не выполняется). При поступлении транзактов на вход задерживающих блоков образуются очереди. Для сбора статистики об очередях в местах задержки ставят блоки QUEUE. Эти блоки сами по себе не создают очередь, а лишь являются средством ее регистрации. При входе транзакта в блок QUEUE текущая длина очереди получает приращение. Уход из очереди отображается блоком DEPART.
очереди имеют следующие стандартные числовые атрибуты:
Q$j - текущая длина очереди j;
Q$Xj - максимальная длина очереди j;
QA$j - средняя длина очереди j;
QC$j - число входов в очередь j;
QZ$j - число входов в очередь с нулевым временем пребывания (транзакт прошел
через блок QUEUE, не задерживаясь в очереди);
QT$j - среднее время пребывания в очереди j, включая нулевые входы;
QX$j - среднее время пребывания в очереди j, без нулевых входов.
ТАБЛИЦЫ
Для сбора статистических данных о различных отчетах модели и их представления в стандартной табличной форме используют таблицы. Занесение информации в таблицу осуществляется блоком TABULATE в момент входа очередного транзакта в этот блок. описание структуры таблицы и типа заносимых данных (СЧА) осуществляется картой TABLE.
Стандартные числовые атрибуты таблиц:
TB$j - среднее значение фиксируемой в таблице j переменной;
TC$j - число входов в таблицу j;
TD$j - стандартное среднеквадратическое отклонение табулируемой переменной.
ЯЧЕЙКИ
Для записи в процессе моделирования текущих значений СЧА используют ячейки. Занесение информации в ячейку осуществляет блок SAVEVALUE. При входе транзакта в этот блок требуемое значение СЧА фиксируется в ячейке, номер которой определяется операндом блока SAVEVALUE. Ячейки имеют различные форматы (слово, полуслово, с плавающей точкой), которым соответствуют следующие СЧА:
X$j - текущее значение, записанное в ячейке j формата слово;
XH$j - текущее значение, записанное в ячейке j формата полуслова;
XL$j - содержимое ячейки с плавающей точкой.
Изменение содержимого ячеек может осуществляться блоками SDECREMENT и SINCREMENT. Блок SDECREMENT вычитает заданное значение из величины, содержащейся в ячейке. Блок SINCREMENT добавляет требуемое приращение к содержимому ячейки.
ФУНКЦИИ И ПЕРЕМЕННЫЕ
Функции служат для отображения зависимостей между двумя СЧА. В GPSS/PC имеется два типа функций: непрерывные (С) и дискретные (D). Функцию задают набором пар точек - координат. Непрерывная функция воспроизводится в виде ломаной кривой, отрезки которой соединяют соседние точечные значения. Дискретная функция имеет вид ступенчатой кривой. На рис.1.3 представлены непрерывная (а) и дискретная (б) функции, соответствующие одному и тому же набору точек X1,Y1; X2,Y2; X3,Y3; X4,Y4, где X означает аргумент, а Y - значение функции.
Функцию описывают картой FUNCTION. За ней помещают одну или Несколько карт, содержащих координатные точки.
Карта описания функции задает ее тип, количество пар точек(Х1, Yi) и СЧА, используемый в качестве аргумента. Формат этой карты имеет следующий вил:
НОМЕР FUN[CTION] А.В
где:
НОМЕР -номер функции, задаваемый программистом;
А - аргумент (любой СЧА);
В - тип функции.
Тип функции указывают как СП - для непрерывной и Do - для дискретной функции, где n - число пар точек (Xi, Yi).
Карты, содержащие точки (Х1, Yi), имеют следующий вид: XI,YI/X2,Y2/.../Xi,Yi/.../Xn,Ynпричем обязательно X1 < Х2< ..Xi <...<Хn.
В GPSS/PC существуют также операторы для описания переменных, составляемых из стандартных числовых атрибутов. Целочисленные переменные, а также булевы переменные описывают оператором VARIABLE. Переменные с плавающей точкой описывают оператором FVARIABLE.
Операторы переменной имеют следующий формат:
ФОРМАТЫ ОПЕРАТОРОВ GPSS/PC
Операторы GPSS/PC имеют следующий формат:
Метка__ Операция__Операнды; комментарии
Знак " " указывает пробел, знак ";" объявляет начало поля комментариев.
Метка, если она имеется, должна начинаться с первой колонки и содержать не более пяти алфавитно-цифровых символов, начинающихся с буквы.
Звездочка (*) в первой колонке означает строку комментариев.
Поле операциисодержит название блока или служебного оператора (карты). Это поле может начинаться со второй колонки и должно быть отделено от метки пробелом. Длина поля операции не менее четырех символов (начальные символы блоков или карт).
Поле операндовотделяют от поля операции пробелом. Между операндами должны стоять запятые.
Пример: * FACILITY DESCRIPTION
FAC SEIZE I; CPU
ADVAN 10,5; MSEC
RELEASE I
.
.
.
MАС TRANSFER .3,FAC
Карты описания таблиц, функций, переменных и памятей должны иметь в поле метки число от 1 до 32767 (215 - 1) или предварительно определенный символ.
Примеры:
* ENTITIES DESCRIPTION
1 STORAGE 1280; MAIN
4 TABL M1,0,10,10
В полях операндов могут быть использованы следующие обозначения.
Константа -целое число от 1 до 32767(2*-1)или предварительно определенная последовательность символов.
СЧА $ coast-стандартный числовой атрибут, номер которого определяется константой const.
' coast-значение параметра, номер которого определяется константой canst
СЧА *СЧА2 $ coast- косвенная адресация с использованием стандартного числового атрибута 1 (СЧА1), номер которого задан значением стандартного числового атрибута * (СЧА2), определяемого константой const.
СЧА%СЧА $ coast- косвенная адресация через стандартные числовые атрибуты.
Примеры
1. XF*V$2 Содержимое полнословной ячейки, номер которой определяется значением
переменной 2.
2. FN*P$2 Значение функции.номер которой определяется содержимым параметра 1.
3. ХН$2 Содержимое полусловной ячейки номер два.
4. *TERM
Значение параметра, номер которого определен константой TERM. В описательной части программы значение константы TERM должно быть определено оператором EQU, например: TERM EQU 10, при этом *TERM означает содержимое десятого параметра.
Ниже дано полное описание форматов блоков, а также служебных и управляющих операторов GPSS/PC.
БЛОКИ
2.1.1. ADVANCE (ЗАДЕРЖАТЬ) ADVANCE -задерживает транзакт.
Формат: ADVA[NCE] А,В
А - среднее время задержки (константа, если В не задано);
В - разброс относительно среднего значения, должен быть меньше или равен А.
Блок ADVANCE моделирует временною задержку транзакта в течение определенного интервала. Значение задержки по умолчанию равно нулю. Если поле В не является FN$, т время задержки является случайным числом, распределенным равномерно на интервале от (; + В) до (А - В). Если поле В является функцией FN$, то время задержки определяете произведением поля А на значение функции в поле В. Функция может быть использована для задания времени задержки с определенным средним значением и отклонением, зависящим от А.
Примеры:
1. ADVANCE 75 Транзакт будет оставаться в блоке ADVANCE в течение 75 единиц модельного времени.
2. ADVANCE 12,5 Транзакт будет оставаться в блоке от 7 до 17 единиц времени.
2. ADVANCE 5,FN$l Время задержки равно произведению значения функции FN$1 на число пять.
См.также: GENERATE
ASSEMBLE (СОЕДИНИТЬ)
ASSEMBLE- объединение транзактов, принадлежащих одному семейству (или ансамблю).
Формат: ASSE[MBLE] А
А - число объединяемых транзактов.
Первый транзакт семейства, достигнув блока ASSEMBLE, задерживается в нем до тех пор, пока остальные члены семейства не поступят в этот блок. Когда транзакты, число которых указано в поле А, поступят в этот блок, они будут удалены из модели, а первый прибывший транзакт продолжит движение.
Пример ASSEMBLE 3
После того, как 3 транзакта одного семейства войдут в блок, один (первый) выйдет из блока и продолжит движение, остальные будут уничтожены.
См-также: GATHER MATCH SPLIT
ASSIGN (ПРИСВОИТЬ)
2.1.4.
ASSIGN - изменяет значение параметра транзакта.
Формат: ASSI[GN] А.В
А - номер изменяемого параметра (+, -);
В - новое значение параметра.
Если за полем А следует знак + или -, то значение поля В соответственно добавляется или вычитается из А. Если знаки - или + не указаны, то значение поля В становится текущим значением параметра.
Примеры
1. ASSIGN 2,8 Присваивает параметру 2 значение 8.
2. ASSIGN 3+,V$5 Добавляет значение переменной 5 к параметру 3.
См-также:
DECREMENT
INCREMENT
BUFFER (ВОЗОБНОВИТЬ ПРОСМОТР СПИСКА)
BUFFER- возобновляет просмотр списка текущих событий.
Формат: BUFF[ER]Не имеет операндов.
Останавливает процесс движения транзакта и заново начинает просмотр списка текущих событий. Не связан с временем задержки.
Пример
BUFFER Возобновляет просмотр списка текущих событий.
См.также: PRIORITY
DEPART (ПОКИНУТЬ ОЧЕРЕДЬ)
DEPART -удаляет транзакт из очереди.
Формат: DEPA[RT] А,В
А - номер (имя) очереди;
В - число удаляемых из очереди элементов.
Удаляет текущий транзакт из очереди, указанной в поле А, и уменьшает содержимое очереди на значение поля В. Транзакт может находиться одновременно в двух различных очередях.
Примеры
1. DEPART 5 Текущий транзакт удаляется из очереди 5, а длина очереди уменьшается на единицу.
2. DEPART Р$3,7
Транзакт удаляется из очереди, номер которой определен параметром 3, длина очереди уменьшается на 7 элементов.
См.гакже: QUEUE
ENTER (ВОЙТИ В ПАМЯТЬ)
ENTER - помещает транзакт в память.
Формат: ENTE[R] А,В
А - имя памяти символическое или числовое;
В - число занимаемых единиц памятнее умолчанию единица).
Проверяется наличие свободного объема памяти, номер которой определен в поле А. Если имеется свободная память, то транзакт входит в блок ENTER. При этом занятый объем памяти увеличивается на значение поля В. Если транзакт не может войти в блок ENTER, о задерживается в предыдущем блоке.
Примеры
1. ENTER 1 Войти в память 1, занимая единицу ее объема.
2. ENTER Р$1,10 Войти в память, номер которой определяется параметром 1, занимая 10 единиц памяти.
См.также:
LEAVE
STORAGE
GATE (ВПУСТИТЬ)
GATE - вспомогательный блок, проверяющий состояния устройств, памятей, логических ключей.
Формат: GATE_R А,ВВнутренний операнд R определяет проверяемое условие в виде
логического атрибута и может принимать следующие значения:
U - устройство занято;
NU - устройство не занято;
1 - устройство прервано;
NI - устройство не прервано;
SF - память заполнена;
SNF - память не заполнена;
SE - память пустая;
SNE - память не пустая;
LR - ключ выключен;
LS - ключ включен;
М - транзакт находится в состоянии синхронизации;
MN - транзакт не находится в состоянии синхронизации.
Если проверяемое условие для объекта, номер которого определяется полем А, выполняется (СЛА "ИСТИНА"), то транзакт входит в блок GATE. Если условие "ЛОЖЬ", то возможны два случая:
1) если поле В задано, то транзакт идет в блок, номер которого указан в поле В;
2) если в поле В пробел, то транзакт ждет в предыдущем блоке, пока не выполнится условие.
Примеры
1. GATE_SF 1
Если память номер 1 полна, то транзакт входит в блок GATE, в противном случае ждет ее заполнения.
2. GATE_NU Р$2,МЕТ
Если устройство, номер которого определен параметром Р$2, не занятого транзакт входит в блок GATE, в противном случае он идет в блок с именем МЕТ.
GATHER (СОБИРАТЬ)
GATHER -накапливает транзакты, являющиеся членами семейства.
Формат: GATHER_A
А - счетчик транзактов, которые должны быть накоплены.
Транзакты одного семейства задерживаются в блоке GATHER до тех пор, пока их число не станет равным значению поля А. Когда последний транзакт войдет в блок GATHER, все они одновременно выходят из него в том порядке, в котором поступили. Состояние блока GATHER может быть проверено блоком GATE.
Пример
GATHER 6
Транзакты накапливаются в этом блоке до тех пор, пока в нем не соберутся шесть транзактов из одного семейства, после чего все они смогут продолжать движение.
См-также: ASSEMBLE MATCH SPLIT
INCREMENT (УВЕЛИЧИТЬ)
INCREMENT -увеличивает значение параметра транзакта.
Формат: INCR[REMENT] А,В
А - номер параметра для изменения;
В - значение, которое должно быть добавлено к содержимому параметра.
Значение поля В добавляется к величине параметра, указанного в поле А.
Примеры
1. INCREMENT 2,1
Добавляет единицу к содержимому параметра 2.
2. INCREMENT P$5,FN$2
Добавляет значение функции 2 к параметру 5.
См.также:
ASSIGN
DECREMENT
INDEX (ИНДЕКСИРОВАТЬ)
INDEX- замещает значение параметра 1.
Формат: INDE[X] А,В
А - номер параметра;
В - значение, которое должно быть добавлено.
Присваивает первому параметру значение, равное сумме значений поля В и параметра, номер которого указан в поле А.
Примеры
1. INDEX 1,2
Число 2 добавляется к параметру 1.
2. INDEX 2,PN$4
Сумма параметра 2 и функции 4 записывается в параметр 1.
См.также:
ASSIGN
DECREMENT
INCREMENT
LEAVE (ВЫЙТИ)
LEAVE - выводит транзакт из памяти.
Формат: LEAV[E] А,В
А - номер памяти;
В - число освобождаемых единиц, памяти (по умолчанию 1).
Транзакт удаляется из памяти, имя (номер) которой указано в поле А. Число освобождаемых при этом единиц памяти определяется полем В.
Примеры
1. LEAVE 2
Транзакт удаляется из памяти 2, освобождая одну единицу памяти.
2. LEAVE Р$1,3
Удаляет транзакт из памяти, номер которой определен параметром 1, и освобождает в
ней 3 единицы объема.
См.также:
ENTER
STORAGE
LINK (ВВЕСТИ В СПИСОК)
LINK- помещает транзакт в список пользователя.
Формат: LINK А,В, С
А - номер списка;
В - дисциплина списка (FIFO, LIFO, номер параметра);
С - альтернативный блок.
Когда индикатор списка включен, транзакт поступает в список, номер которого указан в поле А, способом, заданным в поле В. В противном случае, транзакт направляется в блок С или поступает в список, если операнд в поле С не определен. Индикатор списка в исходном состоянии выключен. Если в поле В указан номер параметра j, транзакты помещаются в список по возрастанию значений параметра j (транзакты с большими j являются последними в списке). LIFO означает: "последний пришел - первым обслужен" (стек), FIFO - "первым пришел - первым обслужен" (очередь).
Примеры
I. LINK 5,LIFO,LABEL
Если индикатор списка включен, транзакт помещается в начало списка пользователя 5. В противном случае, транзакт перейдет в блок с меткой LABEL.
2. LINK 5,2
Транзакты безусловным образом поступают в список пользователя номер 5, располагаясь в порядке возрастания значений их второго параметра.
См.также: UNLINK
LOCATE (ОПРЕДЕЛИТЬ)
LOCATE- определяет, каким будет следующий блок для данного транзакта.
Формат: LOCATE A,B,C,D
А - номер рассматриваемого транзакта;
В - СЧА ячейки или параметра, куда будет помещен номер блока (Х, ХВ, ХН, РВ, PF, РН);
С - номер ячейки или параметра, указанного в поле В;
D - альтернативный переход.
Просматривает транзакт, указанный в поле А, для определения номера блока, в который он поступит следующим. Этот номер записывается в параметре или ячейке, указанных в полях В и С. Если требуемый транзакт неактивный, текущий транзакт переходит в альтернативный блок, указанный в D. Если поле D не задано и транзакт неактивный, происходит ошибка.
Пример
LOCATE ХН$ TRANS,P,3,INACT
Записывает в параметр 3 текущего транзакта номер следующего блока, в который должен войти транзакт, номер которого записан в полусловной ячейке с именем TRANS. Если данный транзакт неактивен, то посылает текущий транзакт в блок с меткой INACT.
См.также:
TRANSFER
USING
LOOP (ОРГАНИЗОВАТЬ ЦИКЛ)
LOOP- осуществляет повторное прохождение транзактом цепочки блоков.
Формат: LOOP А,В
А - номер параметра, определяющего число циклов;
В - блок, на который переходит транзакт, если параметр А не равен нулю.
Значение параметра поля А уменьшается на единицу. Если оно не равно нулю, транзакт переходит в блок, имя которого указано в поле В. В противном случае транзакт проходит в следующий блок.
Пример:
LOOP 2,LABEL
Уменьшает на единицу значение параметра 2 и переходит к блоку с именем LABEL, если параметр 2 не равен нулю.
MARK (ОТМЕТИТЬ)
MARK- ставит отметку времени или записывает значение таймера.
Формат: MARK А
А - номер параметра, в который записывается значение таймера абсолютного времени.
Если поле А не используется, отметка времени (время создания транзакта) заменяется значением текущего таймера. Если поле А определено, то текущее значение таймера записывается в параметр, указанный в поле А.
Примеры
1. MARK
Заменяет время входа транзакта в модель на текущее значение таймера.
2. MARK 3
Записывает текущее значение таймера в параметр 3.
MATCH (СИНХРОНИЗИРОВАТЬ)
MATCH- синхронизирует дна транзакта одного семейства.
Формат: MATCH А
А - номер сопряженного блока MATCH.
Первый транзакт, достигнув блока MATCH, задерживается в нем до тех пор, пока другой транзакт семейства достигнет сопряженного блока MATCH, указанного в поле А. Во время задержки устанавливается индикатор синхронизации. Он сбрасывается, когда транзакт того же семейства входит в соответствующий блок MATCH.
Пример
АA MATCH ВВ
.
.
.
ВВ MATCH АА
Транзакты, которые поступают в АА или ВВ, задерживаются до поступления транзакта в другой блок MATCH. Оба транзакта выйдут одновременно из блоков MATCH.
См-также:
ASSEMBLE
GATHER
SPLIT
PREEMPT (ПРЕРВАТЬ)
PREEMPT - переводит устройство в прерванное состояние.
Формат: PREE[MPT] А
А - номер прерываемого устройства.
Транзакт получает в пользование устройство, указанное в поле А, если это устройство не было прервано другим транзактом. Если предыдущий транзакт захватил устройство через блок PREEMPT, текущий транзакт блокируется.
Пример
PREEMPT Р$1
Если устройство, номер которого задан параметром Р1, не было переведено в состояние прерывания, то транзакт, входящий в этот блок, захватывает его.
См.также:
SEIZE
RELEASE
RETURN
PRINT (НАПЕЧАТАТЬ)
PRINT- печатать АО семи значений СЧА.
Формат: PRIN[T] SNA1, SNA2,..., SNA7
SNA - любые допустимые стандартные числовые атрибуты.
Печатается список от 1 АО 7 СЧА при каждом входе транзакта в этот блок. Значения СЧА неи изменяются.
Примеры
1. PRINT P$l,P$2,P$3,P$4
Печать значений параметров 1, 2, 3, 4.
2.PRINT XH$3,XH$4,V$2,FR$8,P$9,P$10
Печать значений ячеек 3 и 4, переменной 2, коэффициента использования прибора 8 и
содержимого параметров 9 и 10.
QUEUE (СТАТЬ В ОЧЕРЕДЬ)
QUEUE- помещает транзакт в конец очереди.
Формат: QUEU[E] А,В
А - номер очереди (числовое или символьное имя очереди);
В - число добавляемых к очереди элементов (по умолчанию 1).
Увеличивает текущее содержимое очереди, указанной в поле А, на значение в поле В. Если поле В не определено, увеличивает содержимое очереди на единицу. Транзакт может находиться в двух различных очередях одновременно.
Примеры
1. QUEUE 5
Присоединить транзакт к очереди 5.увеличив ее длину на единицу.
2. QUEUE Р$1,3
Стать в очередь, указанную в параметре 1, и увеличить ее длину на 3.
См.также: DEPART
RELEASE (ОСВОБОДИТЬ)
RELEASE- освобождает устройство.
Формат: RELE[ASE] А
А -номер устройства(числовое или символьное имя освобождаемого устройства) .
Устройство, указанное в поле А, освобождается и становится доступным для других транзактов. Освобождать устройство должен тот же транзакт, который его занимал.
Примеры
1. RELEASE 10
Освободить устройство 10.
2. RELEASE Р$2
Освободить устройство, указанное в параметре 2.
См-также:
PREEMPT
RETURN
SEIZE
RETURN (ВЕРНУТЬ)
RETURN- удаляет транзакт из прерванного устройства.
Формат: RETU[RN] А
При входе транзакта в блок RETURN снимается прерывание с устройства, которое было прервано этим транзактом. Снятие прерывания должно быть осуществлено тем же транзактом, который вызвал прерывание. Если устройство было занято АО прерывания, то прерванный транзакт возвращается на дообслуживание после снятия прерывания.
Примеры
1. RETURN 1
Транзакт снимает прерывание устройства 1.
2. RETURN XH$3
Отменяет прерывание устройства, номер которого определяется содержимым
полусловной ячейки 3.
См.также:
PREEMPT
RELEASE
SEIZE
SEIZE (ЗАНЯТЬ)
SEIZE- занимает устройство.
Формат: SEIZ[E] А
А -номер устройства.
Транзакт пытается занять устройство, определенное полем А. Если прервано, транзакт задерживается в предыдущем блоке.
Примеры
1. SEIZ 5
Попытка занять прибор 5.
2. SEIZ Р$3
Попытка занять прибор, указанный в параметре 3.
См.также:
PREEMPT
RELEASE
RETURN
SPLIT (РАСЩЕПИТЬ)
SPLIT - создает копии текущего транзакта.
Формат: SPLIT A,B,C,D
А - число создаваемых копий;
В - следующий блок для копий;
С - параметр для хранения порядкового номера копии;
D - число параметров у каждой копии.
Поле А определяет число копий, которые образуются при входе текущего транзакта. Эти вновь созданные транзакты по умолчанию идентичны исходному транзакту. Копии входят в блок, указанный в поле В. Исходный транзакт поступает на следующий блок. Параметр поля С используется для задания порядковых номеров копий. Нумерация осуществляется следующим образом. Порядковый номер исходного транзакта увеличивается первым. Если он был равен нулю, при входе транзакта в блок он станет равным единице. Порядковый номер первой копии станет на единицу больше, чем у исходного транзакта Ломера последующих копий также увеличиваются на единицу. Если поле D не задано, копии имеют такое же, как у исходного транзакта число и тип параметров.
Примеры
1. SPLIT 4.THERE
Создает 4 копии вошедшего транзакта и посылает в блок с именем THERE. Исходный
транзакт идет на следующий блок.
2. SPLIT 3,Р$1,1,4
Создает три копии текущего транзакта. Каждая копия будет иметь четыре параметра;
порядковый номер указан в параметре 1. Параметр 1 будет определять номер следующего
блока.
См.также:
ASSEMBLE
GATHER
MATCH
TERMINATE (ЗАВЕРШИТЬ)
TERMINATE- удаляет транзакт.
Формат: TERMI[NATE] А
А -величина, вычитаемая из содержимого счетчика завершений(поле А карты START).
Транзакт удаляется из модели и поступает в пассивный буфер. Если в поле А пробел, воздействия на счетчик завершений не происходит, в противном случае его значение уменьшается на величину, указанную в поле А.
Примеры
I. TERMINATE
Транзакт удален, но значение счетчика завершений не изменяется.
3. TERMINATE 2
Значение счетчика завершений уменьшается на 2.
См.также: GENERATE
TEST (ПРОВЕРИТЬ)
TEST- сравнивает два стандартных числовых атрибута.
Формат: TEST_r А,В,С
r - внутренний операнд, принимающий значения:
Е - равно;
NE - не равно;
L - меньше чем;
LE - меньше чем или равно;
G - больше чем;
GE - больше чем или равно;
А - стандартный числовой атрибут;
В - стандартный числовой атрибут;
С - номер альтернативного блока.
Значения стандартных числовых атрибутов, указанных в поле А и В, сравниваются отношением, определяемым операндом г. Если условие выполняется, транзакт вводится в блек. Если условие не выполняется и определено поле С, транзакт переходит в указанный блок, если же С не задано, транзакт задерживается в предыдущем блоке.
Примеры
1. TEST_E P$1,2,LABEL
Если значение первого параметра равно двум, транзакт войдет в блок TEST и продолжит
движение в следующий блок. Если значения не равны, транзакт перейдет в блок с меткой
LABEL.
2. TEST_L FN$2,P$2
Если функция 2 меньше, чем параметр 2, транзакт входит в блок TEST, в противном
случае он становится заблокированным.
TRACE (НАЧАТЬ ТРАССИРОВКУ)
TRACE- прослеживает движение транзактов.
Формат: TRAC[E] Неимеет операндов.
Устанавливает индикатор (бит трассировки), вызывающий печать каждого шага при движении транзакта через модель.
Пример
TRACE
Будет прослежено движение транзактов в модели, начиная с блока TRACE.
См.также: UNTRACE
TRANSFER (ПЕРЕДАТЬ)
TRANSFER- изменяет движение транзакта в модели.
Формат: TRAN[SFER] А,В,С,D
А - режим передачи (пробел,.,ALL,BOTH,FN,P,PICK,SBR,SIM);
В - следующий блок;
С - следующий блок;
D - значение индекса, используемое в режиме ALL.
Транзакт направляется в блок, определяемый в соответствии с режимом передачи, указанным в поле А.
Режимы передачи поля А:
1. Пробел - транзакт передается в блок, определяемый полем В.
2. "."- статистический режим; в поле А указано десятичное число, выражающее
вероятность перехода в блок С; его дополнение до единицы указывает
вероятность перехода в блок В.
3. ALL - транзакт последовательно пытается перейти в блоки, определяемые
значениями В, B+D,B+2D.....C.
4. BOTH- транзакт последовательно пытается войти в блок В, затем в блок С, до тех
пор, пока один из них станет доступным.
5. FN- функциональный режим: поле В является номером функции; следующий блок
определяется суммой значения этой функции поля С.
6. Р - параметрический режим: поле В является номером параметра; следующий
блок определяется суммой значения этого параметра и поля С.
7. PICK - выборочный режим: блок выбирается с равной вероятностью из блоков с
номерами: В,B+l,..., С.
8. SBR - режим перехода к подпрограмме: номер текущего блока помещается в
параметр, указанный в поле С, а транзакт передается в блок, номер которого
указан в поле В.
9. SIM - одновременный режим: проверяется одновременное выполнение условий
беспрепятственного движения транзактов в задерживающих блоках . Если
условие выполняется, транзакт передается в следующий