VALUE(s[,[newvalue][,selector]]) s is treated as a symbol, and if it has a value, that value is returned. If s is not a valid symbol then an error results. Otherwise the result is just as for a symbol appearing in a program. For compound symbols, substitution occurs as normal, except that string constants and expressions (types 4 and 5 in the description of symbols above) are not allowed. If the newvalue parameter is provided, then this value is assigned to the symbol described above. The symbol's old value will be returned. If the selector is provided, then this indicates an alternative variable pool to use instead of the REXX variable pool (except that the word "REXX" is accepted as a valid name for the usual REXX variable pool). The only selector recognised by REXX/imc is the word "ENVIRONMENT", which allows the value() function to examine and alter environment variables. Note that the names and values of environment variables may not contain NUL characters. Example: the following program a=1; b='*' c.a=1; c.b=2 say value("a") value("c.a") value("c.b") value("d.b",6) say value("d.*") will output "1 1 2 D.*" then give an error, because "*" is not allowed as a component of a symbol (however "b" is, even if b="*"). The value of d.b after executing these lines will be 6. The instructions a=value("FOO","ENVIRONMENT") call value "FOO","bar","ENVIRONMENT" are similar to the instructions a=getenv("FOO") call putenv "FOO=bar" respectively.