楼主: 466046020
10851 4

[问题] SAS中的%NRBQUOTE()函数的问题 [推广有奖]

  • 1关注
  • 1粉丝

初中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
106 点
帖子
14
精华
0
在线时间
13 小时
注册时间
2009-10-20
最后登录
2014-3-27

楼主
466046020 发表于 2011-11-24 21:38:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
宏函数%STR()能够隐藏一些特殊的符号,%NRSTR()与%STR的唯一不同之处就是还可以隐藏 & %这两个Macro Triggers, 同样的%BQUOTE() 和 %NRBQUOTE()的区别也是如此。看下面的程序:

%let period=%str(May&Jun);
%put  .
像这个就会出现Warning: Apparent symbolic reference JUN not resolved

%let Period=%nrstr(May&Jun);
%put .

这个就不会出现Warning

%let text=%bquote(May&Jun);
%put &text;
这个肯定也会出现Warning;

%let text=%nrbquote(May&Jun);
%put &text;

但是这个为什么还会出现这个Warning: Apparent symbolic reference JUN not resolved ???
为什么???求高人指教!!!


二维码

扫码加我 拉你入群

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

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

关键词:Quote Reference Symbolic apparent resolved reference period 程序

沙发
deng203 发表于 2011-11-24 21:47:29
同问

藤椅
466046020 发表于 2011-11-25 14:42:56
deng203 发表于 2011-11-24 21:47
同问
没人回答,还得自己研究!我大概知道怎么回事儿了
因为%bquote()和%nrbquote()函数是在execution time起作用的。
如果提交这个语句,会出现两个Warning语句:
%let text=%bquote(May&Jun);
这是因为一个是compile time给出的Warning,另一个是execution time给出的Warning
%let text=%nrbquote(May&Jun);
这个语句有一个Warning,是因为compile time给出的Warning。

板凳
deng203 发表于 2011-11-25 15:31:35
谢谢,虽然还是不明白

报纸
jeozu 发表于 2014-5-19 22:23:42
466046020 发表于 2011-11-25 14:42
没人回答,还得自己研究!我大概知道怎么回事儿了
因为%bquote()和%nrbquote()函数是在execution time起 ...
今天有人问我这个问题,正好回答一下:
SAS marco的引用有
  1. %str, %nrstr,
  2. %quote, %nrquote,
  3. %bquote, %nrbquote,
  4. %superquote.
复制代码
其中,最前面有nr的都不解析&, %这两个代表宏的符号。所以,只要有这两个符号,而同时又不真是宏,而仅仅表示and和百分符号,那么,就需要用%nrstr, %nrbquote。如果不这样做,同时该代码之前没有对应的宏被定义,那么报错,如果恰好定义了同名的宏,那么该宏的代码被解析过来。(这不是你希望的)
%str和%nrstr是在宏编译期起作用,而其他的都是在宏运行期起作用。简单说,%str更像是对固定的文字有用。而%bquote等对宏变量更有用。
总之,多使用%bquote和%nrbquote一般没有什么错。。
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
Amandanannn + 1 + 1 精彩帖子
admin_kefu + 30 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 1  热心指数 + 1   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 23:08