Значение
Значение переменной, в отличие от имени, может изменяться. Когда Вы именуете переменную (придаете ей некоторое значение), то тем самым выполняете присваивание. Например, любой оператор типа
symbol = выражение является оператором присваивания. Таким образом, Вы приказываете интерпретатору вычислить значение выражения и поместить результат в поле переменной symbol. Это эквивалентно следующему: "Присвоить переменной symbol значение результата выражения" или каждый раз, когда переменная symbol появляется в тексте строки инструкции SAY без кавычек, выводить на ее месте значение выражения. Взаимосвязь между переменной и ее значением такая же, как и между почтовым ящиком и его содержимым. Номер почтового ящика всегда один и тот же, а его содержимое может поменяться в любое время. Ниже приведен пример еще одного оператора присваивания:
num1 = 10
Здесь num1 имеет то же смысловое значение, что и слово symbol в предыдущем примере, а значение 10 соответствует слову выражение.
Один из способов изменения значения переменной num1 - добавление некоторого числа или выражения к старому значению с помощью следующего оператора присваивания:
num1 = num1 + 3
Значение num1 теперь изменилось с 10 на 13.
Специальным соглашением в REXX является то, что в качестве первоначального значения переменной, которой не было присвоено значение, является ее имя, выводимое прописными буквами. Например, если Вы напишете в процедуре
list = 2 20 40 SAY list то на экран выведется следующая информация:
2 20 40
Таким образом, переменная list принимает значения, которые были ей присвоены. Однако, если Вы не присвоите переменной list никакого значения и просто напишете:
SAY list то на экран выведется:
LIST
Ниже приведен пример простой процедуры VARIABLE.CMD, которая присваивает значения переменным:
/* Присваивание значений переменным */ a = 'abc' SAY a b = 'def' SAY a b EXIT
Если Вы выполните процедуру VARIABLE, то протокол работы будет выглядеть следующим образом:
[C:\]VARIABLE abc abc def
[C:\]
Процесс присваивания значений прост, однако убедитесь в том, что имя, выбранное для переменной, не будет использовано непредумышленно, как показано на примере процедуры MEETING.CMD:
/* Непреднамеренная интерпретация переменной */ the='no' SAY Here is the person I want to meet EXIT
Протокол выполнения процедуры:
[C:\]MEETING HERE IS no PERSON I WANT TO MEET
[C:\]
Чтобы предотвратить непреднамеренное замещение слова переменной, заключите предложение в кавычки, как это сделано в процедуре MEETING.CMD, которая теперь уже правильно присваивает значение переменной:
/* Правильная интерпретация переменной the*/ the= 'no' SAY "Here is the person I want to meet" EXIT