Для того, чтобы обеспечить пользователя средствами разделения сообщений и других объектов на категории, в GPSS/PC введен специальный класс объектов - группы. Группа также дает возможность обращаться к атрибутам входящих в группу сообщений. Обычно группа представляет собой список чисел. Интерпретация группы и приписывание ей определенного смысла зависят от того, какие элементы образуют группу, и от того, как пользователь создает, обрабатывает и удаляет элементы группы.
Принадлежность к группе и возможность обращения к членам группы совершенно не зависят от состояния составляющих группу сообщений. Если сообщения составляют группу, к любому из них можно обратиться независимо от того, находится оно в списке текущих или будущих событий, в списке прерываний или в списке пользователя. Например, некоторые детали могут быть разбиты на категории по весу и цвету. Соответствующие категории могут быть представлены как группы. В пределах модели, описанной на GPSS/РC, путь сообщения может быть задан группой, членом которой является сообщение. Блоки, связанные с группами, дают пользователю возможность изменять значения некоторых атрибутов, таких как приоритет или значения параметров всех входящих в группу сообщений. Такого рода операции выполняются независимо от того, где сообщение находится в системе. Это свойство дает сообщениям данной группы возможность связываться с другими членами этой группы.
Группы работают в одном из двух возможных режимов: режиме сообщения или числовом режиме. Режим работы группы определяется первым обращением к этой группе, например, при прохождении сообщения через блок JOIN. Как только режим работы установлен, любое последующее обращение к группе должно производиться в установленном режиме. При работе в режиме сообщения элементы группы представляют собой номера образующих группу сообщений. При работе в числовом режиме элементы группы представляют собой список числовых значений.
Блок JOIN имеет следующий формат записи:
JOIN A,[B]
Блок JOIN включает в группу сообщение или числовое значение. Присоединение к группе производится в порядке поступления - на основе алгоритма FIFO.
Поле А задает номер группы, к которой присоединяется новый член.
В поле В задается присоединяемое числовое значение, если группа работает в режиме сообщения.
Блок REMOVE имеет следующий формат:
REMOVE [X] A,[B],[C],[D],[E],[F]
Блок REMOVE удаляет сообщения или числовые значения из соответствующих групп. Из группы, работающей в режиме сообщения, можно удалить несколько сообщений. Сообщения можно также удалять в зависимости от значений атрибутов сообщений (приоритета или параметра).
Указатели отношения во вспомогательном поле операции X определяют какое явное условие следует рассматривать при работе блока REMOVE. Если указатель отношения не задан, предполагается отношение равенства (Е).
Блок EXAMINE имеет следующий формат записи:
EXAMINE A,[B],C
Блок EXAMINE предоставляет пользователю возможность выбора пути, по которому проследует сообщение в зависимости от состояния членов заданной группы.
Поле А задает номер рассматриваемой группы. Операнд может быть именем, положительным целым, СЧА, СЧА*<параметр>.
Поле В задает числовое значение, если группа работает в числовом режиме. Операнд может быть именем, целым, СЧА, СЧА*<параметр>.
В поле С указывается альтернативный блок для сообщения не принадлежащего к заданной группе, если оно переходит к следующему по номеру блоку. Операнд может быть именем, положительным целым, СЧА, СЧА*<параметр>.
Блок SCAN имеет следующий формат записи:
SCAN [X] A,[B],[C],D,E,[F]
Блок SCAN обеспечивает следующие возможности для групп, работающих в режиме сообщения, независимо от расположения ее членов:
- определяет, является ли сообщение с определенным значением атрибута членом данной группы;
- получает значения атрибутов сообщения - члена группы, для которого удовлетворяются заданные условия;
- изменяет дальнейший путь сообщения, если в группе не находится сообщения, удовлетворяющего заданным условиям (при помощи операнда F).
Указатели отношения во вспомогательном поле операции X определяют, какое явное условие нужно рассматривать. Если указатель отношения не задан, то предполагается отношение равенства (Е).
Блок ALTER имеет следующий формат записи:
ALTER [X] A,[B],C,D,[E],[F],[G]
Блок ALTER изменяет приоритет или атрибуты сообщений, принадлежащих к данной группе. Блок ALTER позволяет:
- изменять значение заданного атрибута всех членов группы;
- изменять значение заданного атрибута для определенного числа членов группы;
- изменять значение заданного атрибута сообщения, определенного числа членов группы;
- изменять значение заданного атрибута сообщения, принадлежащего к группе, в том случае, если какой-либо другой атрибут этого сообщения удовлетворяет определенному условию.
Указатель отношения X определяет, какое явное условие следует рассматривать. Если указатель отношения не задан, предполагается отношение равенства (Е). |