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,看名字知道,之前的一篇学习笔 ...
随机推荐
- Spark(四十七):Spark UI 数据可视化
导入: 1)Spark Web UI主要依赖于流行的Servlet容器Jetty实现: 2)Spark Web UI(Spark2.3之前)是展示运行状况.资源状态和监控指标的前端,而这些数据都是由度 ...
- useReducer代替Redux小案例-2(八)
通过上节课的学习,用useContext实现了Redux状态共享的能力,这节课看一下如何使用useReducer来实现业务逻辑的控制.需要注意的是这节课的内容是接着上节课的,需要你把上节课的代码部分完 ...
- 003 接触elasticsearch的Restful Api【快速入门】
在学习的时候,直接参看网上的材料,总是会有各种问题,也可能是版本的问题的差异,也可能是本来就有问题,所以,当存在问题的时候从官网的文档上进行学习. 其中7.2版本的文档是:https://www.el ...
- 海思 Hi3516A Hi3518E V200 芯片介绍
海康是生产监控摄像头和硬盘录像机的,海思是提供机器里芯片的,海思属于华为的. http://www.hisilicon.com/en/Products/ProductList/Surveillance ...
- Kotlin从零到精通Android开发
作者 博客地址 https://blog.csdn.net/aqi00 最新源代码 https://github.com/aqi00/kotlin 资源下载和内容勘误 https://blog.cs ...
- Dart 变量、常量和命名规则
/* Dart 变量: dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推导 dart中定义变量可以通过var关键字可以通过类型来申明变量 如: var str='this is ...
- 品优购商城项目(三)安全框架SpringSecurity
品优购商城项目第三阶段 1.springSecurity的基本用法与shiro类似. 2.BCrypt加密算法比MD5更加智能和安全,能自动加盐再加密,生成的密码是60位比md5的32位更占空间(可以 ...
- 0.9.0.RELEASE版本的spring cloud alibaba sentinel+feign降级处理实例
既然用到了feign,那么主要是针对服务消费方的降级处理.我们基于0.9.0.RELEASE版本的spring cloud alibaba nacos+feign实例添油加醋,把sentinel功能加 ...
- 在excel图表上添加数据标签
在excel图表上添加数据标签 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://zhidao.baidu.com/question/47838665 方法与步骤 在E ...
- python学习:几种采用的功能实现示例
1.python 程序退出的几种方式 import sys sys.exit() sys.exit(0) sys.exit(1) 或者 os._exit() 该方法中包含一个参数status,默认为0 ...