Программирование в GPSS - Ячейки и матрицы ячеекДля того чтобы в модели можно было организовать запоминание каких-либо данных, в языке GPSS имеются специальные СЧА, называемые ячейками сохраняемых величин или ячейками SAVEVALUE. Ячейка имеет обозначение вида Xj, где j – номер или имя ячейки. Запись значений в ячейку осуществляется при входе транзакта в блок SAVEVALUE. Поле A этого блока интерпретируются как номер, косвенный номер или имя ячейки, поле В - как записываемое в нее значение. Если в поле A записан СЧА, то его значение рассматривается как номер ячейки. Пусть, например, транзакт проходит в модели через следующую цепочку блоков:
SAVEVALUE OPERATION_NUMBER,157 SAVEVALUE 1,Х$OPERATION_NUMBER SAVEVALUЕ Х1,C1.
Тогда будут выполнятся следующие действия: · запись числа 157 в ячейку Х$OPERATIONS_NUMBER; · запись числа 157 в ячейку 1; · запись текущего времени в ячейку номер 157. В начальный момент времени, когда в ячейки еще ничего не записывалось, все они имеют нулевое значение. Если к обозначению СЧА в поле A блока SAVEVALUE приписать знак + или -, то в ячейке вместо записи значения будет производиться добавление или, соответственно, вычитание этого значения. Например, прохождение транзактом блоков
SAVEVALUE 11+,S1 SAVEVALUE 12-,V$DIFFERENCIAL
вызовет добавление числа занятых единиц памяти номер 1 в ячейку 11 и вычитание переменной DIFFERENCIAL из ячейки номер 12. Наряду с ячейками в моделях на языке GPSS можно использовать матрицы ячеек. В отличие от простых ячеек матрицы перед использованием должны быть описаны. Для описания матрицы применяется строка описания матрицы. В поле метки этой строки записывается имя описываемой матрицы, в поле операции - слово MATRIX, в поле операндов - параметры матрицы: в поле A записывают любое слово или оставляют поле пустым, в поле В указывают число строк матрицы, в поле С - число столбцов. Например, описать матрицу ITOGI размерами 2 4 можно с помощью строки:
ITOGI MATRIX ,2,4.
В начальный момент любая матрица содержит только нулевые значения. После того как матрицы описаны, можно использовать в качестве СЧА индексированные переменные - ячейки этих матриц. Ячейка матрицы имеет обозначение вида MX$name(a,b), где name – имя матрицы , a - СЧА, значение которого задает номер строки матрицы, b - СЧА, задающий номер столбца. Например, обозначение MX$ITOGI(1,2) соответствует ячейке в первой строке и втором столбце матрицы ITOGI. Запись значений в ячейки матриц осуществляется с помощью блоков MSAVEVALUE. Поле A этого блока задает имя матрицы, поле В - номер строки, поле С - номер столбца, поле D - записываемое значение. Например, при входе транзакта в блок
MSAVEVALUE ITOGI,2,4,V$ABC
в матрицу ITOGI коротких ячеек (в ячейку, расположенную на пересечении второй строки и четвертого столбца) записывается значение переменной V$ABC. В поле A блока MSAVEVALUE после имени матрицы может быть приписан знак + или - . В этом случае значение операнда D добавляется или соответственно вы-читается в ячейке матрицы, аналогично тому, как это делается в блоке SAVEVALUE.
|
