INITIAL X$TIMER,1000000
Ячейке TIMER присваивается начальное значение 1000000;
INITIAL X3.25
Ячейке с номером 3 присваивается начальное значение 25.
INITIAL MX8(2,4),-53
Величина -53 записывается в строку 2, столбец 4 матрицы 8.
INITIAL MX$COST(1,3),22
Величина 22 записывается в строку 1, столбец 3 матрицы COST
Блок SAVEVALUE (СОХРАНИТЬ ВЕЛИЧИНУ). Значение сохраняемой величины изменяется при входе транзакта в блок SAVEVALUE (СОХРАНИТЬ ВЕЛИЧИНУ). Его формат:
SAVEVALUE A[+,-],B
Таблица 4.40
Операнд | Значение | Результат по умолчанию |
А | Номер или символьное имя сохраняемой величины | Ошибка |
В | Величина, используемая для модификации (число или СЧА) | Ошибка |
Подобно блоку ASSIGN блок SAVEVALUE может быть использован как в режиме замещения величины, так и в режиме увеличения или уменьшения. В режиме увеличения предыдущее значение сохраняемой величины увеличивается на значение, заданное операндом В, а в режиме уменьшения - уменьшается на это значение. Режимы увеличения и уменьшения определяются введением соответственно знака «плюс» или «минус» перед запятой, разделяющей операнды А и В.
|
|
Пример 4.39
SAVEVALUE P5,V$ALPHA
При входе транзакта в блок SAVEVALUE прежде всего вычисляется величина переменной ALPHA. Полученный результат присваивается сохраняемой величине, номер которой записан в параметре Р5.
SAVEVALUE 5+,X2
При входе транзакта в блок величина Х5 увеличивается на значение величины Х2.
SAVEVALUE PROFIT-,FN$COSTS
При входе транзакта в блок величина X$PROFIT уменьшается на значение функции FN$COSTS.
Оператор описания матрицы MATRIX. Каждая матрица должна быть объявлена до ее использования, т.е. должна иметь оператор описания. Формат оператора представлен в таблице.
Таблица 4.41
Поле | Информация в поле |
Метка | Имя матрицы |
Операция | MATRIX |
Операнд А | Не используется (оставлен для совместимости с более старыми версиями GPSS) |
Операнд В | Число строк матрицы (целое положительное) |
Операнд С | Число столбцов матрицы (целое положительное) |
Матрица в GPSS/PC может содержать не более чем 8191 элемент. Она может быть переопределена или инициализирована повторно другим оператором MATRIX с тем же именем. Переопределение, при котором размер матрицы изменяется, повлечет за собой выделение памяти под новую матрицу. Выделенная до этого оперативная память остается занятой.
Блок MSAVEVALUE. Блок MSAVEVALUE используется для записи значений в матрицы, а также для увеличения или уменьшения значений элементов матриц. Его формат:
MSAVEVALUE A[+,-],B,C,D
Таблица 4.42
Операнд | Значение | Результат по умолчанию |
А | Имя матрицы | Ошибка |
В | Номер строки матрицы | Ошибка |
С | Номер столбца матрицы | Ошибка |
D | Величина, используемая для модификации | Ошибка |
Операнды А, В и С могут быть именем, положительным целым СЧА или СЧА*СЧА. Операнд D может быть именем, СЧА или, СЧА*СЧА.
|
|
Подобно блокам ASSIGN и SAVEVALUE этот блок может быть использован как в режиме замещения величины, так и в режиме увеличения или уменьшения.
Когда транзакт входит в блок MSAVEVALUE, то анализируете операнд А и ищется матрица с указанным именем. Если матрица не найдена, то возникает ошибка. Соответствующий элемент матрицы определяется содержимым операндов В и С. Если такого элемента не существует, то также возникает ошибка.
Задание для самостоятельной работы:
1. Присвойте начальное значение 1000 сохраняемой величине PROFIT.
2. Присвойте начальное значение 50 сохраняемой величине с номером 5.
3. Присвойте значение функции TIMER сохраняемой величине с номером 3.
4. Уменьшите значение сохраняемой величины COSTS на величину параметра MONEY.
5. Увеличьте значение сохраняемой величины 1 на максимальное значение длины очереди QPRIB.