楼主: AngleeZZ
616 5

[技术讨论与投票] [SAS]宏变量含有%记号的时候,%put展开的时候为啥AB会重复输出两次? [推广有奖]

  • 0关注
  • 0粉丝

本科生

76%

还不是VIP/贵宾

-

威望
0
论坛币
338 个
通用积分
2.7100
学术水平
7 点
热心指数
8 点
信用等级
3 点
经验
9151 点
帖子
139
精华
0
在线时间
71 小时
注册时间
2019-1-7
最后登录
2026-1-13

楼主
AngleeZZ 发表于 2023-8-24 12:30:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问如何解释为啥AB会重复输出两次?
%let x=%;
%let y=B;
%put &x A&y;
输出:% AB AB
二维码

扫码加我 拉你入群

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

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

关键词:put let

沙发
whymath 发表于 2023-8-28 20:19:24
有意思,但还不知道原因,蹲后续。
---
更多测试:
  1. %let y=B;
  2. %let x=%;
  3. %put &x A &y;
  4. % A B


  5. %let x=%nrstr(%%);
  6. %put &x A&y;
  7. % AB


  8. %let x=%;
  9. %put &x A&x;
  10. ERROR: 文本表达式长度 (65535) 超出最大长度 (65534)。
  11. ERROR: 文本表达式长度 (65536) 超出最大长度 (65534)。
  12. ...
复制代码


查看我的精华帖:免费的 SAS 软件

藤椅
AngleeZZ 发表于 2023-8-29 09:11:53
感谢测试!
下面这个看起来像是无限循环的结果
%let x=%;
%put &x A&x;
ERROR: 文本表达式长度 (65535) 超出最大长度 (65534)。

板凳
whymath 发表于 2023-8-30 10:53:40
我问了 SAS 技术支持,他们给了我这个链接:https://go.documentation.sas.com ... 5n16g6js048nhfl.htm
该链接文档中提到了这个现象和解决方案(即使用 %nrstr() 函数),但未给出造成该现象的原因

报纸
AngleeZZ 发表于 2023-8-30 11:06:25
嗯嗯,感谢感谢。
%bquote()也可以解决,只要把特殊文字%转义就OK了。
%貌似有俩特殊功能,一个是宏识别符,一个是特殊文字转义识别符

地板
jg.sas 发表于 2023-9-1 14:25:14
  1. %let y=B;
  2. %let x=%;;
  3. %put &x A &y;
  4. % A B
复制代码

多加一个英文分号结尾可以正常输出

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

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