全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
811 3
2020-01-15
先贴一段,等大神们来解答下
%macro tttt;
%global _name;
proc sql noprint;
        select strip(name)||"_c="||"strip(vvalue("||strip(name)||strip("))") into:_name separated by " ;"
        from dictionary.columns
        where memname = upcase("class");
quit;
%put NOTE: &_name.;/*正确输出结果*/
%mend;
%tttt;
%put NOTE: &_name.;/*日志会报很多error*/



贴个日志结果
13   %macro tttt;
14   %global _name;
15   proc sql noprint;
16       select strip(name)||"_c="||"strip(vvalue("||strip(name)||strip("))") into:_name separated by " ;"
17       from dictionary.columns
18       where memname = upcase("class");
19   quit;
20   %put NOTE: &_name.;
21   %mend;
22   %tttt;
NOTE: “PROCEDURE SQL”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.01 秒


NOTE: Name_c=strip(vvalue(Name)) ;Sex_c=strip(vvalue(Sex)) ;Age_c=strip(vvalue(Age)) ;Height_c=strip(vvalue(Height))
;Weight_c=strip(vvalue(Weight))
23   %put NOTE: &_name.;/*日志会报很多error*/
NOTE: Name_c=strip(vvalue(Name))
NOTE: 由宏变量 _NAME 生成行。
1     Name_c=strip(vvalue(Name)) ;Sex_c=strip(vvalue(Sex)) ;Age_c=strip(vvalue(Age)) ;Height_c=strip(vvalue(Height)) ;
                                  -----
                                  180
1  ! Weight_c=strip(vvalue(Weight))
ERROR 180-322: 语句无效或未按正确顺序使用。

NOTE: 由宏变量 _NAME 生成行。
1     Name_c=strip(vvalue(Name)) ;Sex_c=strip(vvalue(Sex)) ;Age_c=strip(vvalue(Age)) ;Height_c=strip(vvalue(Height)) ;
                                                            -----
                                                            180
1  ! Weight_c=strip(vvalue(Weight))
ERROR 180-322: 语句无效或未按正确顺序使用。

NOTE: 由宏变量 _NAME 生成行。
1     Name_c=strip(vvalue(Name)) ;Sex_c=strip(vvalue(Sex)) ;Age_c=strip(vvalue(Age)) ;Height_c=strip(vvalue(Height)) ;
                                                                                      --------
                                                                                      180
1  ! Weight_c=strip(vvalue(Weight))
ERROR 180-322: 语句无效或未按正确顺序使用。

NOTE: 由宏变量 _NAME 生成行。
1     Name_c=strip(vvalue(Name)) ;Sex_c=strip(vvalue(Sex)) ;Age_c=strip(vvalue(Age)) ;Height_c=strip(vvalue(Height)) ;
1  ! Weight_c=strip(vvalue(Weight))
     --------
     180
ERROR 180-322: 语句无效或未按正确顺序使用。


二维码

扫码加我 拉你入群

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

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

全部回复
2020-1-15 14:50:39
百思不得其解
二维码

扫码加我 拉你入群

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

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

2020-1-15 17:00:50
你把global的定义放在宏外边试一试
二维码

扫码加我 拉你入群

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

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

2020-1-22 12:37:21
其实就是分号的问题,macro 内的%put 不出问题,我也不知道怎么回事。但外面的可以肯定就是解释成了%put xx; xx;xx; %put 在第一个分号就结束了,后面都是错误的sas 语句,所以最好%put %quote(&_name.); 这样用...
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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