ecf825b2

VALUE


Функция VALUE в качестве результата возвращает значение символа с указанным именем и, по требованию, присваивает ему новое значение. По умолчанию функция VALUE обращается к текущей среде переменных REXX, но могут быть выбраны и другие, внешние, коллекции переменных. Если Вы используете функцию VALUE для получения информации о переменных REXX, то значение имени должно быть действительным символом языка REXX. (Вы можете убедиться в этом, используя функцию SYMBOL). Строчные буквы указанного имени переводятся в прописные. Если имя является составным, то REXX подставляет значения символов для получения производного имени символа.

Если Вы указали аргумент новое-значение, то указанной поименованной переменной присваивается это новое значение. Данное действие не влияет на возвращенный результат; т.е. функция возвращает значение указанного имени таким, каким оно было до выполнения новой операции присваивания.

Ниже приведено несколько примеров: /* После: Drop A3; A33=7; K=3; fred='K'; list.5='Hi' */ VALUE('a'k) -> 'A3' VALUE('a'kk) -> '7' VALUE('fred') -> 'K' /* ищет FRED */ VALUE(fred) -> '3' /* ищет K */ VALUE(fred,5) -> '3' /* и устанавливает K=5 */ VALUE(fred) -> '5' VALUE('LIST.'k) -> 'Hi' /* ищет LIST.5 */

Чтобы использовать функцию VALUE для манипуляции переменными среды OS/2, в качестве значения переключателя должна быть указана строка 'OS2ENVIRONMENT' или выражение, результатом вычисления которого будет эта же строка. В этом случае переменная с указанным именем не должна быть действительным символом языка REXX. Когда функция VALUE используется для установки или изменения значения переменной среды, новое значение сохраняется после завершения выполнения процедуры REXX.

Ниже приведено несколько примеров: /* Дано: внешняя переменная FRED имеет значение 4 */ share = 'OS2ENVIRONMENT' say VALUE('fred',7,share) /* выводит '4' и присваивает */ /* переменной FRED значение 7 */

say VALUE('fred',,share) /* выводит '7' */

/* После выполнения процедуры FRED снова имеет значение 4 */ /* Получение доступа и изменение переменных среды OS/2 */ env = 'OS2ENVIRONMENT' new = 'C:\LIST\PROD;' say value('prompt',,env) /* выводит '$i[p]' (возможно) */ say value('path',new,env) /* выводит 'C:\EDIT\DOCS;' (возможно) */ /* и устанавливает PATH = 'C:LIST\PROD' */ say value('path',,env) /* выводит 'C:LIST\PROD' */ /* По завершении процедуры PATH = 'C:\LIST\PROD' */


Примечания:

  • Если функция VALUE обращается к непроинициализированной переменной REXX, то в качестве результата всегда возвращается значение переменной, принимаемое по умолчанию; условие NOVALUE не формируется. Условие NOVALUE никогда не формируется при ссылке на внешнюю коллекцию переменных.

  • Функция VALUE используется, когда переменная содержит имя другой переменной, или в случаях, когда имя переменной строится динамически. Если в качестве значения имени указана отдельная текстовая строка, то символ является константой и поэтому обращение к функции можно, как правило, заменить этой строкой (т.е. символами, расположенными в кавычках). (Например, fred=VALUE('k'); идентично присваиванию fred=k;, если только не было отслежено условие NOVALUE).

  • Для осуществления временных изменений переменных среды используйте функции SETLOCAL и ENDLOCAL.




    Содержание раздела