SAS在字符的条件比较中使用全局变量
SAS using global variables in conditional comparisons of characters
我有一个 if 语句来检查全局变量是否 yes/no
全局变量是前一个宏的输出
为什么当我在 'Y' 或 'N' 周围使用引号时它不起作用 - 我从未在任何其他编程语言中看到过这种情况。我总是不得不对字符变量使用引号
即这不起作用
%if &errorflag='Y' %then %do;
但这行得通:
%if &errorflag=Y %then %do;
宏不过是一个文本替换引擎。所以 &errorflag
中包含的值是 Y
而不是 'Y'
。显然Y ^= 'Y'
.
这行得通
%if "&errorflag" = "Y" %then %do;
它用引号将 &errorflag
中的值括起来。
%if "%upcase(&errorflag)" = "Y" %then %do;
可能是更安全的比较。
我有一个 if 语句来检查全局变量是否 yes/no
全局变量是前一个宏的输出
为什么当我在 'Y' 或 'N' 周围使用引号时它不起作用 - 我从未在任何其他编程语言中看到过这种情况。我总是不得不对字符变量使用引号
即这不起作用
%if &errorflag='Y' %then %do;
但这行得通:
%if &errorflag=Y %then %do;
宏不过是一个文本替换引擎。所以 &errorflag
中包含的值是 Y
而不是 'Y'
。显然Y ^= 'Y'
.
这行得通
%if "&errorflag" = "Y" %then %do;
它用引号将 &errorflag
中的值括起来。
%if "%upcase(&errorflag)" = "Y" %then %do;
可能是更安全的比较。