SAS的字符串比较(非等于)语法

时间:2018-02-28 18:33:40

标签: sas sas-macro

我正在尝试进行字符串比较,在将从配置文件读取的字符串和我提到的字符串之间进行。以下是正确的吗?

%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

  1. 是否必须在引号中指定ABC?
  2. 使用ne(不相等)是否正确?

1 个答案:

答案 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

neeq没问题,或者您可以使用=^=,我更喜欢ne