Блок и оператор LET для работы с C–величинами
В большинстве случаев при создании С-величн используют блок LET. При этом значение, данное каждой С-величине, остается таким же до конца моделирования, если только его не изменит какой-нибудь транзакт, вошедший через этот или другой блок, относящийся к данной С-величине. Имя С?величины записывается как X$n ,где n - символическое имя. В общем случае формат блока LET имеет вид:
LET A=B
В приведенной записи операнд А - имя С-величины (переменной), операнд В - значение, которое присваивается переменной, указанной в операнде А. Операнд В может быть константой, СЧА или выражением.
Блок LET может работать в нескольких режимах. Простейшим из них является режим назначения:
LET X$cost=27 ! С-величина X$cost принимает значение 27
LET X$fval=FN$val
*С-величина X$fval получает текущее значение функции val.
Блок LET может также использоваться для распечатки значений СЧА не в конце моделирования, как обычно, а в любой момент времени. В этом случае следует использовать следующую конструкцию:
GENERATE 80,,,1
LET X$stor80=S$.
TERMINATE
Используя такой сегмент, можно распечатать текущую емкость МНУ stor в момент времени 80
Блок LET (либо оператор LET) может использоваться в качестве счетчика. Так, например, запись
LET X$cvb=X$cvb+1
означает увеличение величины X$cvb на единицу. Однако для выполнения подобной операции в micro-GPSS предусмотрена более простая конструкция:
LET+ A,B
(или LET- A,B для уменьшения значения счетчика). В приведенной записи операнд А - это имя С-величины, а операнд В - величина, на которую изменяется значение счетчика. Таким образом, приведенное выше выражение может быть записано в виде:
LET+ X$cvb,1
Помимо работы в режиме назначения, блок LET может использоваться для работы с параметрами транзактов. Значения параметров транзактов назначаются и изменяются с использованием одного из следующих трех режимов блока LET.
1. Режим замещения - старое значение параметра заменяется новым независимо от того, каким было это значение. Формат:
LET A=B
В приведенной записи операнд А - номер модифицируемого параметра, который обозначается как Рj (j = 1...12); операнд В - значение, присваиваемое параметру А.
2. Режим приращения - новое значение параметра вычисляется путем сложения значения операнда В со старым значением параметра. Формат:
LET+ A,B
LET A=A+B
В приведенной записи операнд А - номер модифицируемого параметра Pj; операнд В - величина,на которую увеличивается текущее значение параметра Рj.
3. Режим уменьшения (аналогично режиму 2). Формат :
LET- A,B
LET A=A-B
LET может использоваться не только как блок, но и как оператор. Следует напомнить, что большинство СЧА, в том числе и С-величины, имеют в качестве начального значения «0». Иногда бывает необходимо, чтобы в начале моделирования С-величина (или другой СЧА) имела начальное значение, отличное от 0.Это можно сделать с помощью оператора LET. Формат оператора:
LET A,B
В приведенной записи операнд А - имя С-величины (или другого СЧА); операнд В в общем случае - положительная константа, которая присваивается С-величине в качестве начального значения. Так, присвоение C?величине cvx начального значения, равного 25, производится следующим образом:
LET X$cvx=25
Следует заметить,что оператор LET должен располагаться обязательно перед первым блоком GENERATE. Заметим также, что в этом случае операнд В не может быть выражением или СЧА, которые ранее нигде не были использованы.Это основное отличие между блоком LET и оператором LET.
Оператор LET используется, главным образом, в тех случаях, когда нужно запустить программу несколько раз с разными значениями некоторых величин.