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,看名字知道,之前的一篇学习笔 ...
随机推荐
- linux系统下以存储从大到小并以K,M,G为单位的方式查看当前目录下的文件信息
zhuazai:https://blog.csdn.net/sty945/article/details/79830915 前言 ls命令 ls -a ls -l ll du命令 du -s du - ...
- JVM 修改类加载器启动类加载器
1.类加载器加载路径 public class MyTest18 { public static void main(String[] args) { //系统类加载器加载路径 System.out. ...
- Android 自定义View 四个构造函数详解
https://blog.csdn.net/zhao123h/article/details/52210732 在开发android开发过程中,很多人都会遇到自定义view,一般都需要继承自View类 ...
- iptables nat表配置
- Ionic4.x、Cordova Android 检测应用版本号、服务器下载文件以及实现App自动升级、安装
Android App 升级执行流程 1.获取本地版本号 2.请求服务器获取服务器版本号 3.本地版本和服务器版本不一致提示升级,弹窗提示用户是否更新 4.用户确定升级,调用文件传输方法下载 apk ...
- C++11使用make_shared的优势和劣势
Why Make_shared ? C++11 中引入了智能指针, 同时还有一个模板函数 std::make_shared 可以返回一个指定类型的 std::shared_ptr, 那与 std::s ...
- RabbitMQ 入门教程(PHP版) 使用rabbitmq-delayed-message-exchange插件实现延迟功能
延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...
- matlab基本函数 randn,rand,orth
一起来学演化计算-matlab基本函数randn, rand, orth 觉得有用的话,欢迎一起讨论相互学习~Follow Me randn X = randn 随机从正态分布中选一个数作为结果 X ...
- 青葱的岁月 Mybatis JdbcType与Oracle、MySql数据类型对应列表
Mybatis JdbcType Oracle MySql JdbcType ARRAY JdbcType BIGINT BIGINT JdbcType BINARY JdbcTy ...
- C# WinForm获取 当前执行程序路径的几种方法(转)
1.获取和设置当前目录的完全限定路径. string str = System.Environment.CurrentDirectory; Result: C:xxxxxx 2.获取启动了应用程序的可 ...