Программирование в GPSS - Блоки COUNT и SELECTБлок COUNT служит для определения количества элементов, удовлетворяющих указанному условию. Он может содержать до пяти полей:
COUNT lo A, B, C [ , D, E]
где lo – логический оператор. Если поля D, E отсутствуют, то lo представляет собой мнемонику СЛА, т.е. для устройств это будет FU, FNU, и т.д., для памятей – SE, SNE и т.д., для ключей – LR или LS; A – номер параметра входящего транзакта, в который помещается результат подсчета объектов; B – нижний предел номер анализируемых объектов; C – верхний предел номеров объектов. Тип объектов задавать не нужно, т.к. он однозначно определяется мнемоникой логического оператора. Множество объектов просматривается и подсчитывается число таких из них, для которых указанный СЛА имеет значение «истина». Полученное число заносится в параметр транзакта, заданный в поле A. Если заданы также поля D и E, то логический оператор lo является оператором сравнения, т.е. имеет вид L, или LE, E, NE и т.д. В поле D тогда задается некоторая величина, а в поле E – СЧА объектов, сравниваемый с величиной поля E. СЧА задается в виде мнемоники без указания номера объекта, т.к. диапазон номеров объектов определен в полях B и C. Например, СЧА может быть задан в виде обозначения SR – тогда будут просматриваться памяти и их коэффициент использования будет сравниваться с величиной в поле E. Пример:
COUNT LE 1, 1, 5, X10, FC.
Здесь в параметр 1 будет записано число устройств из множества от 1-го до 5-го устройства, у которых атрибут FC (счетчик входов) меньше или равен X10. Блок SELECT применяется для нахождения номера первого объекта (из определенного диапазона объектов), удовлетворяющего заданному условию. Операции и операнды этого блока такие же, как и у блока COUNT, с той лишь разницей, что вместо числа соответствующих условию объектов находится номер первого такого объекта. И еще одно отличие состоит в том, что логический оператор здесь может быть задан не только теми обозначениями, которые предусмотрены для блока COUNT, но также еще двумя: MIN и MAX. Пример:
SELECT MIN 1,1,8,,Q.
Здесь будет найден номер самой короткой очереди из восьми (с первой по восьмую) и записан в первый параметр транзакта.
Читайте также:
|
