В GPSS пользователю предоставляется возможность определить глобальные переменные, начальные значения которых могут быть заданы перед моделированием и к которым можно обратиться из любого места модели в любой момент времени. Эти переменные называют сохраняемыми величинами (ячейками). Совокупность логически связанных между собой ячеек образует матрицу (аналог массива). Сохраняемые величины могут принимать положительные и отрицательные значения. Стандартный числовой атрибут Xj (Х$<имя ячейки>) дает значение соответствующей сохраняемой величины. Например, Х2 - значение ячейки 2; X$DAY - значение ячейки DAY.
С матрицами связан стандартный числовой атрибут МХj (т,п) - значение, записанное в строке т и в столбце п матрицы j или МХ$<имя матрицы> (т,п), если матрица имеет символьное имя.
СЧА сохраняемой величины может быть использован для косвенного задания данных, а также как аргумент функций и таблиц.
Перед использованием матрица определяется оператором описания MATRIX. Начальные значения ячеек и матриц можно задать с помощью оператора описания INITIAL.
|
|
Формат записи операторов MATRIX следующий:
<имя> MATRIX <А>,<В>,<С
А не используется. (используется для совместимости с более ранними версиями)
В задается число строк матрицы.
С задается число столбцов матрицы.
Каждая матрица может содержать не более 8191 элементов.
Формат записи оператора задания начальных ячеек матрицы INITIAL имеет вид:
INITIAL <А>,<В>
А – СЧА MX, связанный с именем матрицы посредством знака $, и с указанием номера строки и номера столбца определяемой матрицы,
В — определяемая величина. Операнд поля <В> может быть целым действительным числом.
INITIAL MX$MAT1(2,3),50
Оператор задания матриц INITIAL должен располагаться в программе после определения матрицы оператором MATRIX.
Блок SAVEVALUE (Модифицировать сохраняемое значение) сохраняет СЧА по времени моделирования и очередей.
Формат записи блока имеет вид:
SAVEVALUE А[±],В
В поле <А> задается имя ячейки, в которую записывается значение поля <В> (СЧА).
Подобно блоку ASSIGN блок SAVEVALUE может быть использован как в режиме замещения величины, так и в режиме увеличения или уменьшения. В режиме увеличения предыдущее значение сохраняемой величины увеличивается на значение, заданное операндом В, а в режиме уменьшения - уменьшается на это значение. Режимы увеличения и уменьшения определяются введением соответственно знака «плюс» или «минус» перед запятой, разделяющей операнды А и В.
Блок MSAVEVALUE используется для записи значений в матрицы, а также для увеличения или уменьшения значений элементов матриц. Его формат:
|
|
MSAVEVALUE A[+,-],B,C,D
А – имя матрицы, для которой осуществляется определение или переопределение ее элементов.
В – номер строки определяемой матрицы.
С – номер столбца определяемой матрицы.
D – определяемая величина
Операнды А, В и С могут быть именем, положительным целым, СЧА или СЧА*СЧА. Операнд D может быть именем, СЧА или СЧА*СЧА.
Подобно блокам ASSIGN и SAVEVALUE этот блок может быть использован как в режиме замещения величины, так и в режиме увеличения или уменьшения.