楼主: 美人百货
810 3

[问答] 宏内输出和宏外输出为什么结果不一致? [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

本科生

27%

还不是VIP/贵宾

-

威望
0
论坛币
123 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
280 点
帖子
14
精华
0
在线时间
157 小时
注册时间
2016-12-24
最后登录
2024-9-24

楼主
美人百货 发表于 2020-1-15 14:50:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
先贴一段,等大神们来解答下
%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
百思不得其解

藤椅
jg.sas 发表于 2020-1-15 17:00:50
你把global的定义放在宏外边试一试

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

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-17 20:05