我正在尝试进行字符串比较,在将从配置文件读取的字符串和我提到的字符串之间进行。以下是正确的吗?
%if &strategy ne 'ABC' %then %do;
if ctry eq 'CAN' or ctry eq 'US' then maxpos = 0;
%end;
%else %do;
if ctry eq 'US' then maxpos = 0;
strategy是将从配置文件中读取的参数,我将在其中指定strategy = ABC
答案 0 :(得分:2)
宏语言自然不会在大多数情况下使用引号(在这样的比较中,它们或多或少被视为普通字符,而不是字符串封装),因此它取决于&strategy
是否包含引用字符与否。
%let strategy=ABC;
%if &strategy = 'ABC' %then %put equals; %else %put not equals;
...
not equals
但
%let strategy='ABC';
%if &strategy = 'ABC' %then %put equals; %else %put not equals;
...
equals
在大多数情况下,您通常会比较%if &strategy eq ABC
。
ne
和eq
没问题,或者您可以使用=
和^=
,我更喜欢ne
。