全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4669 7
2014-12-12
%macro bl(var);
proc sql noprint;
select name into :keeplist separated by ' '
from sashelp.vcolumn
where libname='WORK' and memname='A' and name like '&var';
quit;
%mend bl;

%bl(a%_1);


为什么调用这段宏后,提示:
WARNING: 没有解析宏 _1 的调用

二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-12 15:29:46
这个%是触发宏引用的字符,%_1指对宏_1进行解析,为了避免这个情况,你可以用%bl(%nrstr(a%_1));另外在解析宏变量用双引号,如name like “&var”。
二维码

扫码加我 拉你入群

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

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

2014-12-12 16:19:36
%是用来调用宏程序的,你这样写sas就会把_1看成宏程序,改为%bl(%str(a%_1))就行
二维码

扫码加我 拉你入群

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

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

2014-12-13 11:07:07
%macro bl(var);
proc sql ;
        select name into :keeplist separated by ' '
        from sashelp.vcolumn
        where libname='WORK' and memname='A' and name like "&var";
quit;
%mend bl;
%bl(%nrstr(a%_1));
proc means n nmiss mean;
var &keeplist;
title "均数";
run;

谢谢上面两位,之前都问题就能解决,可是在下面都proc means中调用宏程序里面生产都keeplist变量又出错,提示:Error:变量KEEPLIST没有找到,这个是什么原因呢,忘多指导,纯新手,谢谢
二维码

扫码加我 拉你入群

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

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

2014-12-13 11:23:03
273  %bl(%nrstr(a%_1));
NOTE: “PROCEDURE SQL”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.00 秒



274  proc means n nmiss mean ;
275  var &keeplist;
         -
         22
          --------
          202
WARNING: 没有解析符号引用 KEEPLIST。
ERROR: 变量 KEEPLIST 没有找到。
ERROR 22-322: 语法错误,期望下列之一: 名称, ;, /, _ALL_, _CHARACTER_, _CHAR_, _NUMERIC_.
ERROR 202-322: 该选项或参数不可识别,将被忽略。
276  title "均数";
277  run;

NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “PROCEDURE MEANS”所用时间(总处理时间):
      实际时间         0.01 秒
      CPU 时间         0.01 秒

二维码

扫码加我 拉你入群

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

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

2014-12-13 11:51:00
mingfeng07 发表于 2014-12-12 15:29
这个%是触发宏引用的字符,%_1指对宏_1进行解析,为了避免这个情况,你可以用%bl(%nrstr(a%_1));另外在解析 ...
谢谢你都答复,能在帮忙看看嘛?
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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