Пример 4. 38 savevalue p5,v$alpha

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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: