Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

32471_gpss_world_reference

.pdf
Скачиваний:
26
Добавлен:
23.03.2016
Размер:
2.78 Mб
Скачать

Пример

QUEUE WaitingLine

В этом примере содержимое очереди WaitingLine увеличивается на единицу и обновляется соответствующая статистика.

Алгоритм работы

Когда заявка поступает в блок QUEUE, операнд А высчитывается, округляется и используется для нахождения по номеру нужной очереди. При необходимости, такая очередь создается.

Операнд В определяет значение, на которое необходимо увеличить содержимое очереди. Если операнд В был определен, он высчитывается, округляется и используется в качестве инкремента. Если операнд В определен не был, используется значение по умолчанию 1. В конечном итоге, обновляется относящаяся к очереди статистика.

Особые ограничения

B, если он определен, должен быть положительным.

Режим отказа

Заявке никогда не будет отказано в доступе в блок QUEUE.

Родственные SNA

QEntnum – Текущее количество требований в очереди. Текущее значение количества требований в очереди Entnum.

QAEntnum – Среднее количество требований в очереди. Среднее по времени количество требований в очереди Entnum.

QCEntnum – Общее количество требований в очереди. Сумма всех поступивших в очередь требований Entnum.

QMEntnum – Максимальное количество требований в очереди. Максимальное (высшая отметка) количество требований в очереди Entnum.

QTEntnum – Среднее время ожидания в очереди. Среднее время пребывания в очереди Entnum.

QXEntnum – Среднее время ожидания в очереди без нулевых значений. Среднее время пребывания в очереди Entnum без учета значений с нулевым временем пребывания.

QZEntnum – Очередь нулевых входных значений. Количество поступивших в очередь заявок Entnum с нулевым временем пребывания.

Вспомогательное окно

Queues Window (Окно очереди) – Просмотр изменения содержимого очереди в реальном времени.

READ (ЧТЕНИЕ)

Блок READ извлекает текстовую строку из потока данных

READ A,B,C

Операнды

A – Параметр заявки. Обязательный. В качестве операндов должны быть указаны Name,

PosInteger, ParenthesizedExpression, SNA или SNA*Parameter.

B – Номер потока данных. Необязательный. В качестве операндов должны быть указаны

Null, Name, PosInteger, ParenthesizedExpression, SNA или SNA*Parameter. Значение по умолчанию 1.

C – Номер или имя альтернативного блока назначения. Необязательный. В качестве операндов должны быть указаны Null, Name, PosInteger, ParenthesizedExpression, SNA или

SNA*Parameter.

Пример

READ Text_Parm,1,Done

171

В этом примере блок READ извлекает текстовую строку из потока данных номер 1 и помещает копию строки в параметр заявки Text_Parm. Если такого параметра не существует, он создается. Если фиксируется ошибка, активная заявка помещается в блок, помеченный как Done, в противном случае она отправляется на следующий блок.

Алгоритм работы

Когда заявка поступает в блок READ, операнд А высчитывается численно, округляется и используется для идентификации параметра заявки, в который получит следующую строку. Если строка получена успешно и ни одного параметра активной заявки не существует, такой создается.

Если используется операнд В, он вычисляется численно, округляется и используется в качестве номера потока данных. Это должно быть положительное вещественное число. Если операнд В не используется, подразумевается поток данных номер 1.

Если используется операнд С, любая ошибка, зафиксированная в процессе READ, вынудит активную заявку направится в блок с номером С.

В любом случае, если обнаружена ошибка, ее код сохраняется внутри. Блок TERMINATE может использоваться для извлечения кода ошибки. Глава 4 (4.16) содержит полное описание потоков данных, включая описание кодов ошибок.

Если поток данных является канальным потоком, текстовая срока считывается из названия канала и возвращается в параметр заявки. На это время моделирование блокируется.

Если поток данных не является канальным потоком, текстовая строка определяется указателем текущей позиции, первый соответствующий строке индекс ассоциируется с потоком данных. В этом случае, строка, отмеченная указателем текущей позиции, даже если это нулевая строка, возвращается в параметр в качестве результата READ. Затем, указатель текущей позиции инкриминируется, т.е., передвигается к следующему элементу строки. Если строка для чтения отсутствует, не возвращается ничего, и активная заявка посылается в альтернативный блок назначения без сохранения кода какой-либо ошибки.

Считывания могут требовать большого объема вычислений. Производительность можно увеличить посредством использования большого количества информации в небольшом количестве текстовых строк.

Дальнейшее обсуждение

Глава 4 (4.16) содержит полное описание потоков данных в разделе «Потоки Данных».

Режим отказа

Заявке никогда не будет отказано в доступе в блок READ.

Условия блокировки

Моделирование блокируется на время READ текстовой строки.

Родственные блоки

OPEN – Создает поток данных.

CLOSE – Закрывает поток данных.

WRITE – Записывает текстовую строку в потока данных.

SEEK – Устанавливает указатель текущей позиции потока данных.

RELEASE (ОСВОБОЖДЕНИЕ)

Блок RELEASE отказывает в праве занимать устройства или удаляет заявку из группы претендующих на устройство заявок.

RELEASE A

Операнд

A – Номер устройства. Обязательный. В качестве операндов должны быть указаны Name,

PosInteger, ParenthesizedExpression, SNA или SNA*Parameter.

Пример

RELEASE Teller1

172

В этом примере когда заявка, занимающая устройство Teller1, поступает в блок RELEASE, ей отказывается в праве занимать устройство.

Алгоритм работы

Когда заявка поступает в блок RELEASE, он удаляет ее из группы претендующих на устройство заявок. Это может быть выполнено двумя способам:

Если активная заявка занимает устройство, ей отказывается в этом праве, и она направляется в следующий блок.

Если активная заявка была прервана на устройстве, она удаляется из очереди прерываний устройства. На право занимать устройство воздействие не оказывается, так как другая заявка в данный момент занимает устройство. Если активная заявка освобождается от всех приоритетных прерываний обслуживания, она может без помех передвигаться по системе. В любом случае, активная заявка теряет право занимать устройство или удаляется из группы претендующих на устройство заявок, и пытается поступить в следующий блок. Если на устройстве нет ни занимающих его, ни прерванных на нем заявок, фиксируется аварийная остановка.

Если активной заявке отказано в праве занимать устройство, следующая поступающая на обработку заявка берется из очереди неоконченной обработки, очереди прерываний и, наконец, очереди прерванной обработки. Если на этом устройстве не было совершено прерываний в режиме прерывания, первой заявке из очереди предоставляется право занять устройство. В противном случае, право занять устройство возвращается последней прерванной заявке. Если и очередь неоконченной обработки (ожидающие режима прерываний заявки), и очередь прерываний (прерванные заявки) пуста, заявка с наивысшим приоритетом из обычной очереди прерванной обработки дается право занять устройство. Если ни одна заявка не находится в режиме ожидания, устройство становится свободным.

Когда новая заявка, которой предоставляется право занять устройство, выбирается из очереди прерванной обработки, она немедленно поступает на вход блоков SEIZE или REEMPT, и затем перераспределяется посредством помещения в СЕС следом за Заявками с равным приоритетом. После этого текущая активная заявка в блоке RELEASE продолжает свое движение.

Особые ограничения

Поступающая заявка должна занимать устройство или в данный момент быть прерванной на нем. Иначе, фиксируется аварийная остановка.

Режим отказа

Заявке никогда не будет отказано в доступе в блок RELEASE.

Родственные SNA

FEntnum – Занятость устройства. Если устройство Entnum в данный момент занято, FEntnum возвращает 1. В противном случае, FEntnum возвращает 0.

FCEntnum – Количество итераций работы устройства. Сколько раз устройство Entnum было занято заявкой.

FIEntnum – Прерывания работы устройства Entnum. Если работа устройства Entnum в данный момент была прервана, FIEntnum возвращает 1. В противном случае, FIEntnum возвращает 0.

FREntnum – Использование устройства. Время, в течение которого устройство Entnum было занято. FREntnum выражается в долях тысячи и, следовательно, возвращает вещественное значение от 0 до 1000, включительно.

FTEntnum – Среднее время занятости (удерживания) устройства. Среднее время, в течение которого устройство Entnum бло занято заявкой.

FVEntnum – Доступность устройства. FVEntnum возвращает 1, если устройство Entnum доступно, 0 в противном случае.

173

Вспомогательные окна

Facilities Window (Окно устройств) – Возможность просмотра изменения состояния устройств в реальном времени.

REMOVE (УДАЛЕНИЕ)

Блок REMOVE удаляет членов числовой группы или группы заявок.

REMOVE O A,B,C,D,E,F

Операнды

O – Условный оператор. Отношение D к E для активации удаления. Условия выбора описаны ниже. Необязательный. В качестве операндов должны быть указаны Null, E, G,

GE, L, LE, MAX, MIN или NE.

A – Номер группы. Группа, член которой буде удален. Обязательный. В качестве операндов должны быть указаны Name, PosInteger, ParenthesizedExpression, SNA, или

SNA*Parameter.

B – Предел удаления. Максимальное количество подлежащих удалению заявок. Необязательный. В качестве операндов должны быть указаны ALL, Null, Name, PosInteger,

ParenthesizedExpression, SNA или SNA*Parameter.

C – Числовое значение. Числовое значение, подлежащее удалению из числовой группы. Необязательный. В качестве операндов должны быть указаны Null, Name, Number, String,

ParenthesizedExpression, SNA или SNA*Parameter.

D – Тестовое значение. Номер PR или параметра. Атрибут члена, который определяет, все ли члены группы заявок должны быть удалены или PR для использования приоритета заявки для поределения необходимости удаления. Он вычисляется относительно члена группы заявок. Необязательный. В качестве операндов должны быть указаны PR или Null,

Name, PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.

E – Контрольное значение. Значение, с которым сравнивается операнд D. Значение адреса вычисляется относительно активной заявки. Необязательный. Необязательный. В качестве операндов должны быть указаны Null, Name, Number, String, ParenthesizedExpression, SNA

или SNA*Parameter.

F – Номер блока. Альтернативное место назначения для поступающей заявки. Необязательный. В качестве операндов должны быть указаны Null, Name, PosInteger,

ParenthesizedExpression, SNA или SNA*Parameter.

Примеры

REMOVE Inventory

Это простейший способ использования блока REMOVE. Заявка, поступившая в блок REMOVE, проверяется на принадлежность группе заявок Inventory. Если заявка является членом этой группы, она удаляется из нее.

REMOVE G 3,10,,300,11.6,Jump_Block

В этом примере группа заявок 3 сканируется на предмет наличия в ней заявок со значением параметра 300, большим, чем 11,6. Первые 10 найденных заявок удаляются из группы заявок. Если 10 подходящих заявок найти не удалось, поступившая заявка пытается войти в блок под названием Jump_Block. В противном случае, она отправляется в следующий блок.

Алгоритм работы

Блок REMOVE допускает использование числовых значений из числовых групп или заявок из групп заявок. Заявки не изымаются из своего контекста. Однако существует одно исключение. Заявка, поступившая в блок REMOVE, может быть перенаправлена в соответствии со значением операнда F.

Блок REMOVE работает в числовом режиме, если используется операнд С. В числовом режиме операнды А и С численно вычисляются, и число, определенное операндом С, проверяется на принадлежность к числовой группе. Определенной операндом А, который округлятся. Если результат из операнда С является членом числовой группы, он удаляется

174

из нее. Если числовое значение не является членом числовой группы, и используется операнд F, поступившая заявка направляется в блок, определенный операндом F. В противном случае, поступившая заявка поступает в следующий блок. Только операнда А, С и F могут использоваться в числовом режиме. При использовании дробных значений в числовых группах наблюдается некоторая потеря эффективности работы.

Блок REMOVE работает в режиме заявок, если операнд С не используется. В режиме заявок имеются несколько возможностей для выбора подлежащей(их) удалению из группы заявок заявки(ок). Если операнды В, с и Е не задаются, удаляется только поступившая в блок REMOVE заявка. Такой режим работы называется «одиночно удаление». В противном случае, выполняется «сканирование группы».

При групповом сканировании можно проверить каждую заявку на удаление посредством использования условных операторов и/или операндов D и Е. Также, можно ограничить количество удаляемых заявок при помощи операнда В.

Операнд D всегда направляется в группу заявок после проверки. Стоит заметить, что любые SNA могут быть использованы в операнда D. Любые SNA, которым для вычисления необходима заявка, используют члена текущей группы заявок после прохождение проверки. Результат возвращается любыми SNA, отличными от PR, который используется как номер параметр, чье значение возвращается в качестве итогового результата.

При групповом сканировании можно использовать условные операторы для определения отношения между атрибутом заявки (операнд D) и значением адреса (операнд Е), которое будет инициировать удаление заявки. Оба они вычисляются численно. Значение по умолчанию для логического оператора равно Е. Если условные операторы не используются, но используются операнды D и Е, из значения должно быть равны, для того чтобы заявка была удалена из группы заявок. Если в качестве условных операторов используются MIN или MAX, все заявки с большим или меньшим атрибутом (операнд D) удаляются, пока их количество не достигнет предела удаления (операнд В).

Операнд В прекращает сканирование группы, когда он становится равен количеству удаленных заявок. Значение по умолчанию ля него ALL (ВСЕ). Если при неопределенном D атрибутивная проверка не проводится, заявки удаляются до тех пор, пока количество удаленных заявок не станет равно В или пока группа не опустеет.

Операнд F используется и в числовом режиме и в режиме заявок. Он определяет альтернативное место назначения, в которое будет направлена поступившая заявка, когда изъятие будет завершено. Операнд F используется для определения блока назначения при следующих условиях:

В числовом режиме, если численное значение (операнд С) не являлось членом группы

При одиночном удалении, если поступившая в блок заявка не являлась членом группы заявок.

В режиме группового сканирования, если ни одна заявка не была удалена

В режиме группового сканирования, если количество подлежащих удалению членов, определенное операндом В, не может быть достигнуто.

Если операнд F не используется, поступившая заявка всегда отправляется в следующий блок.

Условные операторы

Уловные операторы могут быть следующих видов: E, G, GE, L, LE, MAX, MIN или NE. Если ни один условный оператор не используется, подразумевается E (равенство). Если условие верно, проверяемая Заявка удаляется из Группы. Условия определяются по следующим правилам:

E – Атрибут заявки, определенный операндом D, должен быть равен соответствующему значению, определенному операндом Е, для того чтобы заявка была удалена из группы

175

G – Атрибут заявки, определенный операндом D, должен быть больше соответствующего значения, определенного операндом Е, для того чтобы заявка была удалена из группы

GE – Атрибут заявки, определенный операндом D, должен быть больше либо равен соответствующего значения, определенного операндом Е, для того чтобы заявка была удалена из группы.

L – Атрибут заявки, определенный операндом D, должен быть меньше соответствующего значения, определенного операндом Е, для того чтобы заявка была удалена из группы

LE – Атрибут заявки, определенный операндом D, должен быть меньше либо равен соответствующего значения, определенного операндом Е, для того чтобы заявка была удалена из группы

MAX – Атрибут заявки, определенный операндом D, должен быть равен наибольшему атрибуту всех заявок группы, для того чтобы заявка была удалена из группы

MIN – Атрибут заявки, определенный операндом D, должен быть равен наименьшему атрибуту всех заявок группы, для того чтобы заявка была удалена из группы.

NE – Атрибут заявки, определенный операндом D, должен быть неравен соответствующему значению, определенному операндом Е, для того чтобы заявка

была удалена из группы Если ни один из условных операторов не используется в групповом сканировании,

предполагается использование операнда С.

Особые ограничения

При использовании числовых групп необходимо использовать условные операторы

При использовании числовых групп необходимо использовать операнды B, D или

E.

При использовании операнда D, необходимо использовать операнд E или, в качестве замены, условные операторы MIN или MAX.

При использовании операнда Е, необходимо использовать операнд D

При использовании условных операторов MIN или MAX операнд D должен использоваться, а операнд Е использовать не должен.

Режим отказа

Заявке никогда не будет отказано в доступе в блок REMOVE.

Родственные блоки

Заяви и числа распределяются по группам при помощи блока JOIN. К заявкам в группе заявок могут обращаться блоки ALTER, EXAMINE, REMOVE, и SCAN. К числам из числовых групп могут обращаться блоки EXAMINE.

Родственные SNAs

GNEntnum – Счетчик количества членов числовой группы. GNEntnum возвращает количество членов числовой группы Entnum.

GTEntnum – Счетчик количества членов группы заявок. GTEntnum возвращает количество членов группы заявок Entnum.

Вспомогательные окна

Transaction Groups Snapshot (Текущее состояние группы заявок) – Изображение состояния группы заявок в моделировании.

Numeric Groups Snapshot (Текущее состояние числовой группы) – Изображение состояния числовой группы в моделировании.

176

RETURN (ОСВОБОЖДЕНИЕ)

Блок RETURN отказывает в праве занимать устройства или удаляет заявку из группы претендующих на устройство заявок.

RETURN A

Операнд

A – Номер устройства. Обязательный. В качестве операндов должны быть указаны Name,

PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.

Пример

RETURN Teller1

В этом примере когда заявка, занимающая устройство Teller1, поступает в блок RETURN , ей отказывается в праве занимать устройство.

Алгоритм работы

Когда заявка поступает в блок RETURN , он удаляет ее из группы претендующих на устройство заявок. Это может быть выполнено двумя способам:

Если активная заявка занимает устройство, ей отказывается в этом праве, и она направляется в следующий блок.

Если активная заявка была прервана на устройстве, она удаляется из очереди прерываний устройства. На право занимать устройство воздействие не оказывается, так как другая заявка в данный момент занимает устройство. Если активная заявка освобождается от всех приоритетных прерываний обслуживания, она может без помех передвигаться по системе. В любом случае, активная заявка теряет право занимать устройство или удаляется из группы претендующих на устройство заявок, и пытается поступить в следующий блок. Если на устройстве нет ни занимающих его, ни прерванных на нем заявок, фиксируется аварийная остановка.

Если активной заявке отказано в праве занимать устройство, следующая поступающая на обработку заявка берется из очереди неоконченной обработки, очереди прерываний и, наконец, очереди прерванной обработки. Если на этом устройстве не было совершено прерываний в режиме прерывания, первой заявке из очереди предоставляется право занять устройство. В противном случае, право занять устройство возвращается последней прерванной заявке. Если и очередь неоконченной обработки (ожидающие режима прерываний заявки), и очередь прерываний (прерванные заявки) пуста, заявка с наивысшим приоритетом из обычной очереди прерванной обработки дается право занять устройство. Если ни одна заявка не находится в режиме ожидания, устройство становится свободным.

Когда новая Заявка, которой предоставляется право занять устройство, выбирается из очереди прерванной обработки, она немедленно поступает на вход блоков SEIZE или REEMPT, и затем перераспределяется посредством помещения в СЕС следом за заявками с равным приоритетом. После этого текущая активная заявка в блоке RETURN продолжает свое движение.

Особые ограничения

Поступающая заявка должна занимать устройство или в данный момент быть прерванной на нем. Иначе, фиксируется аварийная остановка.

Режим отказа

Заявке никогда не будет отказано в доступе в блок RETURN.

Родственные SNA

FEntnum – Занятость устройства. Если устройство Entnum в данный момент занято, FEntnum возвращает 1. В противном случае, FEntnum возвращает 0.

FCEntnum – Количество итераций работы устройства. Сколько раз устройство Entnum было занято заявкой.

177

FIEntnum – Прерывания работы устройства Entnum. Если работа устройства Entnum в данный момент была прервана, FIEntnum возвращает 1. В противном случае, FIEntnum возвращает 0.

FREntnum – Использование устройства. Время, в течение которого устройство Entnum было занято. FREntnum выражается в долях тысячи и, следовательно, возвращает вещественное значение от 0 до 1000, включительно.

FTEntnum – Среднее время занятости (удерживания) устройства. Среднее время, в течение которого устройство Entnum бло занято заявкой.

FVEntnum – Доступность устройства. FVEntnum возвращает 1, если устройство Entnum доступно, 0 в противном случае.

Вспомогательные окна

Facilities Window (Окно устройств) – Возможность просмотра изменения состояния устройств в реальном времени.

SAVAIL (ПРОВЕРКА ДОСТУПНОСТИ ПАМЯТИ)

Блок SAVAIL определяет, находится ли память в доступном состоянии.

SAVAIL A

Операнды

A – Имя или номер памяти. Обязательный. В качестве операндов должны быть указаны

Name, PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.

Пример

SAVAIL MotorPool

В этом примере, когда заявка поступает на вход, блока SAVAIL, память MotorPool проверяется на доступность.

Алгоритм работы

Блок SAVAIL определяет, находится ли память в доступном состоянии. Если заявки ожидают в очереди задержки к памяти, он получают шанс удовлетворить свой запрос к памяти, в соответствии с дисциплиной естественной очередности «first–fit–with–skip».

Заявки, чьи запросы к памяти не могут быть удовлетворены, остаются в очереди задержки к памяти.

Если память уже находится в доступном состоянии, блок SAVAIL не выполняет никаких действий.

Режим отказа

Заявке никогда не будет отказано в доступе в блок SAVAIL .

Родственные команды

Область памяти должна быть определена командами STORAGE до того, как она будет обновлена в блоке SAVAIL. Команды STORAGE должны быть определены в модели или должны быть переданы имитационному объекту интерактивно, до того как заявка сможет войти в блок SAVAIL. Любая попытка сделать это до того, как память будет определена, приведет к аварийной остановке.

Область памяти может быть переопределена при помощи интерактивных команд

STORAGE.

Родственные SNAs

REntnum – Неиспользуемая емкость памяти. Объем памяти (или "маркер" пустоты) доступный для использование поступающей заявкой или содержимым самой памяти Entnum.

SEntnum – Занятая память. SEntnum возвращает объем содержащейся в памяти информации (или "маркер" пустоты) использующийся в данный момент активной заявкой или содержимым самой памяти Entnum.

SAEntnum – Средняя емкость используемой памяти. SAEntnum возвращает среднюю по времени емкость используемой памяти (или "маркер" пустоты)

Entnum.

178

SCEntnum – Объем используемой памяти. Общее количество единиц (ячеек) памяти, которые были заняты (или "маркер" пустоты) Entnum.

SEEntnum – Память пуста. SEEntnum возвращает 1, если память Entnum не используется, 0 в противном случае.

SFEntnum – Память заполнена. SFentnum возвращает 1, если память Entnum заполнена, 0 в противном случае.

SREntnum – Использование памяти. Часть общего использования, представленная в виде средней занятости памяти Entnum. SREntnu, выражается в долях тысячи и, следовательно, возвращает вещественное значение от 0 до 1000, включительно.

SMEntnum – Максимальный объем используемой памяти Entnum. "Высшая планка".

STEntnum – Среднее время хранения единицы памяти Entnum.

SVEntnum – Состояние памяти. SVEntnum возвращает 1, если память Entnum доступна, 0 в противном случае.

Вспомогательные окна

Storages Window (Окно памяти) – Просмотр изменения содержимого памяти в реальном времени.

SAVEVALUE (СОХРАНЕНИЕ)

Блок SAVEVALUE изменяет значения области сохранения значений

SAVEVALUE A,B

Операнды

A – номер области сохранения значений. Обязательный. Может сопровождаться суффиксами + или – для определения увеличения или уменьшения имеющегося значения.

В качестве операндов должны быть указаны Name, PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter с суффиксом +, –, или Null.

B – Хранимое, прибавляемое или вычитаемое значение. Обязательный. В качестве операндов должны быть указаны Name, Number, String, ParenthesizedExpression, SNA, или

SNA*Parameter.

Примеры

SAVEVALUE Account,99.95

В этом приме область сохранения значений Account сохраняет значение 99,95.

SAVEVALUE The_Bard,"A rose by any other name ..."

В этом примере область сохранения значений The_Bard сохраняет строку. Если такая область сохранения значений не существует, она создается.

Алгоритм работы

Блок SAVEVALUE используется для сохранения, увеличения или уменьшения значения из области сохранения значений.

Операнд А вычисляется численно, округляется и используется в качестве номера области сохранения значений.

Операнд В вычисляется и используется для определения нового значения для области сохранения значений. Если операнд А имеет суффикс +, численный эквивалент операнда В прибавляется к численному эквиваленту прежнего значения. Если А имеет суффикс –, численный эквивалент операнда В вычитается из численного эквивалента прежнего значения. Если за операндом А не следует никакой знак, прежнее значение, содержащееся в области сохранения значений, заменяется на новое, содержащееся в операнда В.

Режим отказа

Заявке никогда не будет отказано в доступе в блок SAVEVALUE.

Related SNA

XEntnum – область сохранения значений. Возвращается значение, содержащееся в области сохранения значений Entnum.

179

Вспомогательные окна

Expressions Window (Окно выражений) – Просмотр значения выражений в реальном времени.

Plot Window (Окно сценариев) – Просмотр содержимого более 8 выражений в реальном времени.

Savevalues Window (Окно области сохранения значений) – Просмотр изменения содержимого области сохранения значений в реальном времени.

SCAN (СКАНИРОВАНИЕ)

Блок SCAN передает информацию от члена группы заявок активной заявке.

SCAN O A,B,C,D,E,F

Операнды

O – Условный оператор. Отношение B и C для выбора члена группы заявок. Этот выбор обусловливается ниже. Необязательный. В качестве операндов должны быть указаны Null,

E, G, GE, L, LE, MAX, MIN, или NE.

A – Номер группы заявок. Группа, члены которой будут просканированы. Обязательный.

В качестве операндов должны быть указаны Name, PosInteger, ParenthesizedExpression,

SNA, или SNA*Parameter.

B – Тестовое значение. Номер PR или параметра. Атрибут члена, который определяет должен ли быть выбран член группы заявок. Высчитывается относительно члена группы заявок. Необязательный. В качестве операндов должны быть указаны PR или Null, Name,

PosInteger, ParenthesizedExpression, SNA, или SNA*Parameter.

C – Контрольное значение. Значение, с которым сравнивается операнд В. По умолчанию 0. Необязательный. В качестве операндов должны быть указаны Null, Name, Number,

String, ParenthesizedExpression, SNA, или SNA*Parameter.

D – Возвращаемое значение. Номер PR или параметра. Атрибут члена, который определяет, какие члены должны быть установлен в качестве Параметра Активной Заявки. Обязательный. В качестве операндов должны быть указаны PR, Name, PosInteger,

ParenthesizedExpression, SNA, или SNA*Parameter.

E – Номер полученного параметра. Номер параметра поступившей заявки, который получит значение, возвращенное Операндом D. Обязательный. В качестве операндов

должны быть указаны Name, PosInteger, ParenthesizedExpression, SNA, or SNA*Parameter.

F – Номер альтернативного блока. Альтернативное место назначения для поступающей заявки. Необязательный. В качестве операндов должны быть указаны Null, Name,

PosInteger, ParenthesizedExpression, SNA или SNA*Parameter.

Примеры

SCAN MAX Inventory,P$Price,,P$PartNumber,100

В этом примере все заявки из группы заявок Inventory проверяются на наличие среди них заявки с наибольшим параметром Price. Первая заявка с максимальный параметром Price выбирается определения значения операнда D. Значение параметра PartNumber выбранной группы заявок назначается в качестве параметра номер 100 активной заявки. Если группа заявок пуста, ничего не происходит.

SCAN E Lot11,PartNum,127,Price,Price,Phone

В этом примере, когда заявка поступает в блока SCAN, группа заявок Lot11 сканируется на определение первой заявки, в параметре PartNum которой содержится значение 127. Если такая заявка находится, значение ее параметра Price перемещается в соответствующий параметр поступившей в блок SCAN заявки. Поступившая заявка затем направляется в следующий блок. Если ни одного подходящего члена группы не находится, поступившая заявка направляется в блок, обозначенный как Phone. Операнды D и Е не обязательно должны определять одинаковые параметры заявки.

180

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]