Decrement (уменьшить значение)
DECREMENT - уменьшает значение параметра транзакта.
Формат: DECREMENT] A,B
А - номер изменяемого параметра;
В - значение для вычитания.
Величина, указанная в поле В, вычитается из значения параметра, номер
которого указан в поле А.
Примеры:
DECREMENT 3,7
Вычитается число 7 из значения третьего параметра текущего транзакта.
DECREMENT XH$6,V$4
Значение переменной 4 вычитается из параметра, номер которого задан ячейкой 6 формата полуслово.
См.также:
ASSIGN INCREMENT
2.1.6 DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) DEPART - удаляет транзакт из очереди.
Формат: DEPA[RT] A,B
А - номер (имя) очереди;
В - число удаляемых из очереди элементов.
Удаляет текущий транзакт из очереди, указанной в поле А, и уменьшает содержимое очереди на значение поля В. Транзакт может находиться одновременно в двух различных очередях.
Примеры:
DEPART 5
Текущий транзакт удаляется из очереди 5, а длина очереди уменьшается на единицу.
DEPART P$3,7
Транзакт удаляется из очереди, номер которой определен параметром 3, длина очереди уменьшается на 7 элементов.
См.также:
QUEUE
2.1.7 ENTER (ВОЙТИ В ПАМЯТЬ) ENTER - помещает транзакт в память.
Формат: ENTE[R] A,B
А - имя памяти символическое или числовое;
В - число занимаемых единиц памяти (по умолчанию единица).
Проверяется наличие свободного объема памяти, номер которой определен в поле А. Если имеется свободная память, то транзакт входит в блок ENTER. При этом занятый объем памяти увеличивается на значение поля В. Если транзакт не может войти в блок ENTER, он задерживается в предыдущем блоке.
Примеры:
ЕNTER 1
Войти в память 1, занимая единицу ее объема.
ENTER Р$1ДО
Войти в память, номер которой определяется параметром 1, занимая 10 единиц памяти.
См.также:
LEAVE STORAGE
GATE (ВПУСТИТЬ)
GATE - вспомогательный блок, проверяющий состояния устройств, памятей, логических ключей.
Формат: GATE_R A,B
Внутренний операнд R определяет проверяемое условие в виде стандартного
логического атрибута и может принимать следующие значения:
U - устройство занято;
NU - устройство не занято;
I - устройство прервано;
N1 - устройство не прервано;
SF - память заполнена;
SNF - память не заполнена;
SE - память пустая;
SNE - память не пустая;
LR - ключ выключен;
LS - ключ включен;
М - транзакт находится в состоянии синхронизации;
MN - транзакт не находится в состоянии синхронизации.
Если проверяемое условие для объекта, номер которого определяется полем А, выполняется (СЛА "ИСТИНА"), то транзакт входит в блок GATE. Если условие "ЛОЖЬ", то возможны два случая:
- если поле В задано, то транзакт идет в блок, номер которого указан в поле В;
- если в поле В пробел, то транзакт ждет в предыдущем блоке, пока не
выполнится условие.
Примеры:
GATE_SF 1
Если память номер 1 полна, то транзакт входит в блок GATE, в противном случае ждет ее заполнения.
GATE_NU P$2,MET
Если устройство, номер которого определен параметром Р$2, не занято,то транзакт входит в блок GATE, в противном случае он идет в блок с именем МЕТ.
GATHER (СОБИРАТЬ)
GATHER - накапливает транзакты, являющиеся
членами семейства.
Формат: GATHER_A
А - счетчик транзактов, которые должны быть накоплены.
Транзакты одного семейства задерживаются в блоке GATHER до тех пор, пока их число не станет равным значению поля А. Когда последний транзакт войдет в блок GATHER, все они одновременно выходят из него в том порядке, в котором поступили. Состояние блока GATHER может быть проверено блоком GATE.
Пример:
GATHER 6
Транзакты накапливаются в этом блоке до тех пор, пока в нем не соберутся шесть транзактов из одного семейства, после чего все они смогут продолжать движение.
См.также:
ASSEMBLE
MATCH
SPLIT
GENERATE (ГЕНЕРИРОВАТЬ)
GENERATE - вводит транзакты в модель.
Формат: GENE[RATE] A,B,C,D,E,F,G
А - среднее значение интервала времени;
В - разброс или модификатор среднего значения (по умолчанию ноль);
С - время появления первого транзакта;
D - общее число генерируемых транзактов;
Е - уровень приоритета каждого транзакта; (от 0 до 127, знач. по умолчанию 0);
F - число параметров (по умолчанию 12);
G - тип параметра (F -полнословный,
Н -полусловный -по умолчанию).
Вводит транзакты в модель, посылая их в следующий по порядку блок. Если в поле В не указана функция, то интервал между поступлением транзактов определяется случайным числом, равномерно распределенным в диапазоне от (А-В) до (А+В). Если поле В является функцией (FN$), то этот интервал определяется произведением поля А на значение функции, заданной в поле В.
Примеры:
GENERATE 15,3,25
Генерируются транзакты с интервалом прихода от 12 до 18 единиц времени, первый из которых поступает в момент времени 25 единиц.
GENERATE 5,FN$2,,15
Генерируются транзакты с приоритетом 15, интервалы времени между ними определяются произведением числа 5 на значение функции FN$2.
См.также:
ADVANCE TERMINATE
2.1.11 PREEMPT (ПРЕРВАТЬ)
PREEMPT - переводит устройство в прерванное состояние.
Формат: PREE[MPT] A
А - номер прерываемого устройства.
Транзакт получает в пользование устройство, указанное в поле А, если это устройство не было прервано другим транзактом. Если предьщущий транзакт захватил устройство через блок PREEMPT, текущий транзакт блокируется.
Пример:
PREEMPT P$l
Если устройство, номер которого задан параметром Р1, не было переведено в состояние прерывания, то транзакт, входящий в этот блок, захватывает его.
См.также:
SEIZE
RELEASE
RETURN
2.1.12 PRINT (НАПЕЧАТАТЬ)
PRINT - печатать до семи значений СЧА.
Формат: PRIN[T] SNAI,SNA2,...,SNA7
SNA - любые допустимые стандартные числовые атрибуты.
Печатается список от 1 до 7 СЧА при каждом входе транзакта в этот блок. Значения СЧА не изменяются.
Примеры:
PRINT P$1,P$2,P$3,P$4
Печать значений параметров 1,2,3,4.
PRINT XH$3,XH$4,V$2,FR$8,P$9,P$10
Печать значений ячеек 3 и 4, переменной 2, коэффициента использования прибора 8 и содержимого параметров 9 и 10.
2.1.22. PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ)
PRIORITY - изменяет уровень приоритета транзакта.
Формат: PRIOfRITY] A,BUFFER
А - новый приоритет (целое число в диапазоне от 0 до 127); [BUFFER] - указывает возобновление процедуры просмотра списка текущих событий.
Устанавливает приоритет входящему транзакту в соответствии со значением поля А. Если операнд BUFFER отсутствует, продолжается обработка текущего транзакта. Если операнд BUFFER указан, то текущий транзакт помещается в список текущих событий и возобновляется просмотр списка.
Примеры:
PRIORITY 4
Назначить транзакту уровень приоритета 4, попытка продвинуть транзакт в следующий блок.
PRIORITY XF$1,BUFFER
Назначить транзакту приоритет, равный значению ячейки 1, поместить транзакт в список текущих событий и возобновить его просмотр.
См.также:
BUFFER GENERATE
2.1.13 TERMINATE (ЗАВЕРШИТЬ)
TERMINATE - удаляет транзакт.
Формат: TERMINATE] A
А - величина, вычитаемая из содержимого счетчика завершений (поле А карты
Транзакт удаляется из модели и поступает в пассивный буфер. Если в поле А пробел, воздействия на счетчик завершений не происходит, в противном случае его значение уменьшается на величину, указанную в поле А.
Примеры:
TERMINATE Транзакт удален, но значение счетчика завершений не изменяется.
TERMINATE 2 Значение счетчика завершений уменьшается на 2.
См.также:
GENERATE
2.1.14 TEST (ПРОВЕРИТЬ) TEST- сравнивает два стандартных числовых атрибута.
Формат: TESTj A,B,C
г - внутренний операнд, принимающий значения:
Е - равно;
NE - не равно;
L - меньше чем;
LE - меньше чем или равно;
G - больше чем;
GE - больше чем или равно;
А - стандартный числовой атрибут;
В - стандартный числовой атрибут;
С - номер альтернативного блока.
Значения стандартных числовых атрибутов, указанных в поле А и В, сравниваются отношением, определяемым операндом г. Если условие выполняется, транзакт вводится в блок. Если условие не выполняется и определено поле С, транзакт переходит в указанный блок, если же С не задано, транзакт задерживается в предыдущем блоке.
Примеры:
TEST_E P$1,2,LABEL
Если значение первого параметра равно двум, транзакт войдет в блок TEST и продолжит движение в следующий блок. Если значения не равны, транзакт перейдет в блок с меткой LABEL.
TEST_L FN$2,P$2
Если функция 2 меньше, чем параметр 2, транзакт входит в блок TEST, в противном случае он становится заблокированным.
TRANSFER (ПЕРЕДАТЬ)
TRANSFER - изменяет движение транзакта в модели.
Формат: TRANSFER] A,B,C,D
А - режим передачи (пробел,. ДЬЬЗОТН,Ж,Р,Р1СК,8ВК,81М);
В - следующий блок;
С - следующий блок;
D - значение индекса, используемое в режиме ALL.
Транзакт направляется в блок, определяемый в соответствии с режимом передачи, указанным в поле А.
Режимы передачи поля А:
1. Пробел - транзакт передается в блок, определяемый полем В.
2. "." - статистический режим: в поле А указано десятичное число,
выражающее вероятность перехода в блок С; его дополнение до единицы указывает вероятность перехода в блок В.
3. ALL - транзакт последовательно пытается перейти в блоки, определяемые
значениями В, B+D, B+2D,...,C.
4. BOTH - транзакт последовательно пытается войти в блок В, затем в блок С,
до тех пор, пока один из них станут доступным.
5. FN - функциональный режим: поле В является номером функции;
следующий блок определяется суммой значения этой функции поля С.
6. Р - параметрический режим: поле В является номером параметра;
следующий блок определяется суммой значения этого параметра и поля С.
7. PICK - выборочный режим: блок выбирается с равной вероятностью из
блоков с номерами: В, В+1,..., С.
8. SBR - режим перехода к подпрограмме: номер текущего блока помещается
в параметр, указанный в поле С, а транзакт передается в блок, номер которого указан в поле В.
9. SIM - одновременный режим: проверяется одновременное выполнение условий
беспрепятственного движения транзактов в задерживающих блоках. Если условие выполняется, транэакт передается в следующий блок, в противном случае транзакт переходит на блок С.
Примеры:
TRANSFER ,NEXT Безусловная передача в блок с меткой NEXT.
ТRANSFER .400,FACI,FAC2
С вероятностью 0.6 транзакты будут переданы в блок FACI и с вероятностью 0.4 в блок FAC2,