全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
927 1
2016-09-20
%let ptitle  = %nrbquote(Protocol No: 00-0000/1234 and 5678) ;

%macro area;
%global areaid;
%let areaid=%scan(&ptitle,2,/);
%put  &areaid;
%if &areaid= 1234 and 5678 %then %do;
  %let areaid=%str(Combined);
%end;
%put  &areaid;
%mend area;

%area;

我的目的是把 "1234 and 5678" 替换成 " Combined". 请问为什么最后 宏参数 areaid 没有变化?

PS: 如果把上面红色部分这样写, 就是成功的, 为什么呢?
%if &areaid= 5678 %then %do;
  %let areaid=%str(Combined);
%end;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-9-20 13:49:36
因为字符串中包含and, SAS将其看作mnemonic operators. 改一下就好了
%let ptitle  = %nrbquote(Protocol No: 00-0000/1234 and 5678) ;

%macro area;
%global areaid;
%let areaid=%qscan(&ptitle,2,/);
%put  &areaid;
%if &areaid=%str(1234 and 5678) %then %do;
  %let areaid=%str(Combined);
%end;
%put  &areaid;
%mend area;

%area;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群