楼主: overdraft
1013 3

[问答] SAS宏基础问题 [推广有奖]

  • 0关注
  • 0粉丝

学前班

60%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
63 点
帖子
2
精华
0
在线时间
1 小时
注册时间
2020-7-15
最后登录
2023-9-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
新人报道,请大家不吝赐教。谢谢。

有这样一段原始代码,目的是为了合并四个library下所有的数据集(这四个library里,每天生成一个当天日期命名的数据集)至四个summay的数据集。
前面这四段proc sql形式上特别一致,想把他们合并为一个宏来处理。预想的代码如下,但是运行不成功。查看日志,报错出在parameter3=list1这里,于是用%put &list1.;来查看输出的参数list1,输出的是&list1 并不是想象中的RMAX_D.A14JUL20 RMAX_D.A15JUL20....这样后面的合并动作就不能完成。
现在自己没找到解决办法,请各位帮忙。


*****************************************************************
原始代码:
proc sql noprint;
        select distinct ("RMAX_D."!!memname) into:list1 separated by " "
        from dictionary.columns
        where libname="RMAX_D"
        ;
quit;
proc sql noprint;
        select distinct ("TMR_D."!!memname) into:list2 separated by ' '
        from dictionary.columns
        where libname="TMR_D"
        ;
quit;
proc sql noprint;
        select distinct ("RMAXSR_D."!!memname) into:list3 separated by ' '
        from dictionary.columns
        where libname="RMAXSR_D"
        ;
quit;
proc sql noprint;
        select distinct ("TMRSRV_D."!!memname) into:list4 separated by ' '
        from dictionary.columns
        where libname="TMRSRV_D"
        ;
quit;

/*Create macro*/
%macro forchart(ds=,final=);
/*Combine dataset to work library*/
        data work.&final.;
                set &ds.;
        run;
%mend forchart;
/*Execute macro*/
%forchart(ds=&list1.,final=rmax_summary);
%forchart(ds=&list2.,final=tmr_summary);
%forchart(ds=&list3.,final=RMAXSR_summary);
%forchart(ds=&list4.,final=tmrsrv_summary);


***************************************************************************
预想的方法:
%macro datasetlist(parameter1=,parameter2=,parameter3=);
proc sql noprint;
        select distinct (&parameter1.!!memname) into:&parameter3. separated by " "
        from dictionary.columns
        where libname=&parameter2.
        ;
quit;

%mend datasetlist;
%datasetlist(parameter1="RMAX_D.",parameter2="RMAX_D",parameter3=list1);
%datasetlist(parameter1="TMR_D.",parameter2="TMR_D",parameter3=list2);
%datasetlist(parameter1="RMAXSR_D.",parameter2="RMAXSR_D",parameter3=list3);
%datasetlist(parameter1="tmrsrv_D.",parameter2="tmrsrv_D",parameter3=list4);


二维码

扫码加我 拉你入群

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

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

关键词:SAS宏 Dictionary Parameter paramete proc sql

回帖推荐

xiaopingN 发表于2楼  查看完整内容

A macro variable defined within a macro gets per default a scope of local. You need to use a %global statement here . %macro datasetlist(parameter1=,parameter2=,parameter3=); proc sql noprint; %global ¶meter3; select distinct (¶meter1.!!memname) into:¶meter3. separated by " " from dictionary.columns where libname=¶meter2. ; quit;
沙发
xiaopingN 发表于 2020-7-16 02:24:22 |只看作者 |坛友微信交流群
A macro variable defined within a macro gets per default a scope of local. You need to use a %global statement here .
%macro datasetlist(parameter1=,parameter2=,parameter3=);
proc sql noprint;
       %global &parameter3;
        select distinct (&parameter1.!!memname) into:&parameter3. separated by " "
        from dictionary.columns
        where libname=&parameter2.
        ;
quit;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 精彩帖子

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

藤椅
xiaopingN 发表于 2020-7-16 02:37:48 |只看作者 |坛友微信交流群
A macro variable defined within a macro gets per default a scope of local. You need to use a %global statement to also use this macro variable outside of the macro.

%macro datasetlist(parameter1=,parameter2=,parameter3=);
proc sql noprint;
       %global &parameter3;
        select distinct (&parameter1.!!memname) into:&parameter3. separated by " "
        from dictionary.columns
        where libname=&parameter2.
        ;
quit;

使用道具

板凳
overdraft 发表于 2020-7-17 09:47:15 |只看作者 |坛友微信交流群
xiaopingN 发表于 2020-7-16 02:24
A macro variable defined within a macro gets per default a scope of local. You need to use a %global ...
问题得到解决。感谢您的帮助。

使用道具

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

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

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

GMT+8, 2024-5-1 07:49