SAS学习笔记47 Macro Quoting
简单来说:Macro Quoting就是将具有特殊功能字符及字母组合的特殊功能隐藏掉。例如:让分号(;)不再表示一个语句的结束,而就是一个普普通通的字符;让GE不再表示大于等于的比较符,而就是两个普普通通的字母
%STR
%STR宏函数是专门用于隐藏特殊字符及字母组合的特殊功能,该宏函数可以隐藏以下所有的特殊字符及字母组合:

需要特别注意的是,如果在文本中出现不匹配的单引号、双引号、或者括号,则需要在其前面加一个%,用来标注该符号是不匹配的,单独的字符。%的意义类似于其他语言中的转义字符:斜杠(\)
%NRSTR
%NRSTR函数的功能与%STR函数是一样的,只不过在%STR的基础上,还能隐藏%和&两个Macro Trigger的功能,使其跟普通字符一样。NR为Not Resolved的简写,即不解析宏变量和宏程序(后文中带有NR的函数都是此意义)
Macro Function wih Quoting
具有Quoting功能的函数:%QSCAN、%QSUBSTR、%QSYSFUNC、%QUPCASE。这些具有Quoting功能的函数,能够隐藏返回结果中的特殊字符的功能。具体来说,可以隐藏以下特殊字符:

%QUOTE和%NRQUOTE
%STR(包括%NRSTR)只在程序编译的阶段起作用;在程序执行阶段是不起作用的。而%QUOTE函数(相对应的还有%NRQUOTE),是在程序执行阶段生效的
%QUOTE与%NRQUOTE两个函数的功能与%STR和%NRSTR两个函数的功能是一样的,只不过前两者是在程序执行阶段生效,而后两者是在程序编译阶段生效
%BQUOTE和%NRBQUOTE
%BQUOTE与%QUOTE,%NRBQUOTE与%NRQUOTE的生效阶段是一样的,都是在程序执行阶段生效。但是%BQUOTE和%NRBQUOTE,在%QUOTE和%NRQUOTE的基础上多了一个功能,即对于不匹配的引号或括号不需要使用多增加一个%(无论是%STR、%NRSTR、%QUOTE、%NRQUOTE如果有不匹配的引号,则必须要在不匹配的引号前添加%。%类似于转义字符的功能)
建议:一般情况下,都会使用%BQUOTE和%NRBQUOTE,基本不使用%QUOTE和%NRQUOTE
%SUPERQ
%SUPERQ宏函数比较特殊,其参数必须是宏变量的名字,而且不用&符号。该函数可以隐藏%NRBQUOTE函数可隐藏的特殊字符及字母组合。
但%NRBQUOTE如果参数为宏变量的引用,会在隐藏特殊字符功能前,先尝试解析其宏变量值中的宏引用或者宏变量的引用;而%SPUERQ函数则不会解析其参数宏变量值中的宏引用或者宏变量的引用
%UNQUOTE
%UNQUOTE顾名思义,就是将之前隐藏掉的功能重新激活,去除Quoting的作用
SAS学习笔记47 Macro Quoting的更多相关文章
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程
SAS学习笔记之<SAS编程与数据挖掘商业案例>(5)SAS宏语言.SQL过程 1. 一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
SAS学习笔记之<SAS编程与数据挖掘商业案例>(4)DATA步循环与控制.常用全程语句.输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和E ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作
SAS学习笔记之<SAS编程与数据挖掘商业案例>(2)数据获取与数据集操作 1. SET/SET效率高,建立的主表和建表索引的查询表一般不排序, 2. BY语句,DATA步中,BY语句规定 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区, ...
- SAS学习笔记42 宏程序
Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用 其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting): K ...
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- CUBRID学习笔记 47 show
cubrid的中sql查询语法show c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . ...
- [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
上次在<iOS学习笔记46——图片异步加载之SDWebImage>中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔 ...
随机推荐
- postgresql【二】postgresql强制删除数据库
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname='db_name' AND ...
- Cesium - Fabric 材质【转官网】
https://github.com/AnalyticalGraphicsInc/cesium/wiki/Fabric Fabric Hannah edited this page on 24 Dec ...
- Spring AOP Log
spring aop action中验证用户登录状态 - CASER_HDMI的博客 - CSDN博客https://blog.csdn.net/CASER_HDMI/article/details/ ...
- Typescript中的可索引接口 类类型接口
/* 5.typeScript中的接口 可索引接口 类类型接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用 ...
- shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句
shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句条件语句 if(条件表达式) 动作1 else if(条件表达式) 动作2 else 动 ...
- ISO/IEC 9899:2011 条款6.8.6——跳转语句
6.8.6 跳转语句 语法 1.jump-statement: goto identifier ; continue ; break ; return expressio ...
- 修改jar包内容并打包上传到私服
第一步:拉下git分支中代码,进行修改,修改后commit——>push 第二步:在IDEA中Terminal中执行命令进行打包到本地mvn clean package 第三步:上传到私服,方法 ...
- sql中去除重复的数据 select distinct * from table
总的思路就是先找出表中重复数据中的一条数据,插入临时表中,删除所有的重复数据,然后再将临时表中的数据插入表中.所以重点是如何找出重复数据中的一条数据,有三种情况 1.重复数据完全一样,使用distin ...
- 011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法
一.JSON数据格式 1.1.常用JSON数据格式 1.对象方式:JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...
- QWidget中结束QThread线程
QThread安全结束 protected: void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event) { th ...