请选择 进入手机版 | 继续访问电脑版
楼主: nowbsheng
1663 0

[问答] 新手求助,关于宏参数parmbuff的语句不能理解,请高手指教。 [推广有奖]

  • 2关注
  • 0粉丝

大专生

65%

还不是VIP/贵宾

-

威望
0
论坛币
41 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
8122 点
帖子
13
精华
0
在线时间
84 小时
注册时间
2018-2-16
最后登录
2022-6-15

nowbsheng 发表于 2018-3-19 09:06:26 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
新手求助,最近在跟着sas开发经典案例解析学sas,在看到以下宏实现模糊查找那部分理解不了,请各位帮忙解释一下,万分感激!(注释为书中所写,还是看不明白)

data city_inf;
length city $20.;
input id $ city @@;
cards;
1001 上海市南京路 1002 北京西城区 1003 上海市浦东区 1004 天津滨海新区 1005 北京东城区 1006 山东济南 1007 山东济宁 1008 北京市丰台区
;
run;

*通过宏indexs实现模糊查找;
%macro indexs/parmbuff;
/*通过宏系统的内部参数宏变量parmbuff接受传递的变量信息*/
%local num dsname;/*定义局部变量*/
%let num=2;
%let dsname=%scan(&syspbuff,&num);
/*把parmbuff的信息传递给宏系统内部宏变量syspbuff,scan函数实现查找功能*/
/*num=2,这里代表从syspbuff变量的第二个变量开始查找*/
%do %while(%quote(&dsname) ne %quote());
/*判断循环语句,如果变量dsname不为空*/
%if &num>2 %then %do;
or
%end;
index(%scan(&syspbuff,1),"&dsname")>0
/*从第一个变量查找,搜索dsname变量的位置*/
%let num=%eval(&num+1);
/*num变量加1*/
%let dsname=%scan(&syspbuff,&num);
/*从第num位置找,并负责给dsname*/
%end;
%mend;

data city;
set city_inf;
where %indexs(city,北京,上海,山东);
/*调用宏变量indexs,模糊查询city变量为北京、上海和属于山东的城市的数据*/
run;

proc print data=city;
run;


二维码

扫码加我 拉你入群

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

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

关键词:新手求助 ARM RMB 天津滨海新区 length 求助

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-16 21:05