全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3809 5
2020-03-01
悬赏 2 个论坛币 已解决
SAS MACRO中单引号与双引号有啥区别?????下列code用单引号就可以正常读入
复制代码

最佳答案

whymath 查看完整内容

一般的,如引号,括号这两类符号需要“匹配”,这是自然语言的特点,被移植到了程序语言中。 匹配是有规则的。从例1可以看出,双引号从左往右匹配,之后的字符被视为多余的,不是程序预定的语法,因此报错。 有些时候确实需要不匹配的引号,如英文 I don't lie. 含有单个的引号,因此使用双引号包围它时,双引号可以从左向右匹配。若使用单引号,则会在 n 和 t 之间完成匹配,后面的字符便会造成麻烦。 在SAS程序中,有两种 ...
二维码

扫码加我 拉你入群

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

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

全部回复
2020-3-1 19:19:49
一般的,如引号,括号这两类符号需要“匹配”,这是自然语言的特点,被移植到了程序语言中。
匹配是有规则的。从例1可以看出,双引号从左往右匹配,之后的字符被视为多余的,不是程序预定的语法,因此报错。

有些时候确实需要不匹配的引号,如英文 I don't lie. 含有单个的引号,因此使用双引号包围它时,双引号可以从左向右匹配。若使用单引号,则会在 n 和 t 之间完成匹配,后面的字符便会造成麻烦。

在SAS程序中,有两种手段来将不匹配引号(或括号)保存到变量中。一是特殊字符屏蔽函数,二是转义字符。

例2中就是将连写两个双引号识别为转义字符,最终存储在宏变量a中的实际为连写两个双引号中的一个双引号。至于例1,建议使用第一种方法,即特殊字符屏蔽函数,如:
复制代码

结果为:
复制代码
二维码

扫码加我 拉你入群

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

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

2020-3-3 09:43:27
个人看法,sas宏本质上是文本替换,替换之后还是要继续执行,不然的话需要使用转义符将其转换为普通字符
二维码

扫码加我 拉你入群

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

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

2020-3-7 15:31:56
whymath 发表于 2020-3-1 19:19
一般的,如引号,括号这两类符号需要“匹配”,这是自然语言的特点,被移植到了程序语言中。
匹配是有规则 ...
再次感谢楼主的回答。今天回过头又看了一下例1,例1的“&a.” 的第一个“与宏取值的第一个“组成一对,宏的" and country="部分取值结成一对,而" and country="这部分前面并没有等号,故报错“期待算术运算符” 2020-03-07_152834.png
二维码

扫码加我 拉你入群

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

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

2020-3-7 21:34:01
whymath 发表于 2020-3-1 19:19
一般的,如引号,括号这两类符号需要“匹配”,这是自然语言的特点,被移植到了程序语言中。
匹配是有规则 ...
【请问大神解答】除了super Q以外,我又用了%quote和%bquote。但是%bquote可以,而%quote会报错(按理他们的差别不是只在对于不匹配的引号或括号不需要使用多增加一个%),不太理解%quote为什么会报错。谢谢大神!
复制代码


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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