全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1202 3
2015-12-03
%macro m1(dsn);
%let b = %scan(&dsn,1,',');
%put &b;
%mend m1;
%m1(123,456)

%macro m1(dsn);
%let b = %scan(%str(&dsn),1,',');
%put &b;
%mend m1;
%m1(123,456)

为什么以上两种方法都不能正常打印出b哪?问题在哪里?求教。


二维码

扫码加我 拉你入群

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

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

全部回复
2015-12-4 10:58:58
复制代码

macro解析的顺序
二维码

扫码加我 拉你入群

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

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

2015-12-4 11:44:41
%m1(123,456)里,SAS把123和456当作两个位置参数了。解决办法是把程序中的分隔符换掉,例如:
%macro m1(dsn);
%let b = %scan(&dsn,1,'|');
%put &b;
%mend m1;
%m1(123|456)
二维码

扫码加我 拉你入群

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

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

2015-12-4 15:16:58
复制代码
你在参数指定的时候,逗号会被认作是参数分隔符。

不过我也不是极其清楚,为什么scan第一位参数有时不用%bquote也可以
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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