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,

Наши рекомендации