类SAS函数的宏函数

该部分函数共5个,其无论是名字、语法、功能都与SAS函数类似,只是在函数名前多了一个“%”。这5个宏函数分别是:

  • %INDEX

  • %LENGTH

  • %SCAN

  • %SUBSTR

  • %UPCASE

需要注意的一点是%INDEX,%SCAN这两个函数,其对应的SAS函数INDEX,SCAN;在INDEX查找指定的文本串,及SCAN中指定分隔符时,需要用引号将其内容引起来;而%INDEX,%SCAN则不需要引号。因为在宏语言中所有的东西都是文本,因此不需要用引号特别指定是文本

完成数值计算的宏函数

如果想要完成数值计算则需要使用%EVAL宏函数来完成。另外,如果计算中出现小数,则需要用%SYSEVALF

另外,%EVAL和%SYSEVALF都是可以进行乘法和除法运算,只不过%EVAL只能对整数进行;而%SYSEVALF可以对小数进行运算

有关宏变量状态的宏函数

%SYMEXIST(macro-variable-name)宏函数用于判断一个宏变量是否存在,其参数为宏变量名。若该宏变量存在,则返回1;否则,返回0

%SYMGLOBL(macro-variable-name)宏函数用于判断一个宏变量是否是全局宏变量,即是否存在于Global Symbol Table中。如果是全局宏变量,则返回1;否则返回0

%SYMLOCAL(macro-variable-name)宏函数用于判断一个宏变量是否是局部宏变量,即是否存在于Local Symbol Table中。如果是局部宏变量,则返回1;否则返回0

有关宏程序状态的宏函数

%SYSMACEXEC(macro-name)宏函数用于获取指定宏的运行状态,若该宏在运行当中,则返回1;否则返回0

%SYSMACEXIST(macro-name)宏函数用于判断一个宏程序是否存在于Work.SASMacr catalog中,如果存在返回1,否则返回0

%SYSMEXECDEPTH宏函数无参数,用于判断宏的嵌套层数。若在宏外调用,则返回0;如果是在一层的宏中调用,则返回1;若在嵌套1层的宏中调用,则返回2;以此类推

%SYSMEXECNAME(n)宏函数通常与上面的%SYSMEXECDEPTH一起使用,用于返回指定嵌套层的宏名字。若n为0,则返回OPEN CODE;若大于0,则返回对应嵌套层的宏名字。若不存在该嵌套层,则会显示警告信息

调用SAS函数的宏函数

%SYSFUNC(function(argument(s))<, format>))宏函数用于调用SAS函数或者使用FCMP过程步创建的自定义函数,还可以将结果按照指定格式输出

其他宏函数

%SYSGET(environment-variable)宏函数用于获取当前操作系统的环境变量的取值

%SYSPROD(product)函数用于判断在当前的SAS环境中,指定的SAS产品是否有License。若有相应许可,则返回1;若无许,则返回0;若参数中的产品名有误,则返回-1

Quoting Function

Quoting Function主要是用于屏蔽一些字符的特定功能,将其作为普通的字符来对待。例如:运算符、比较符、操作符等,还有两个Macro Trigger:%,&

这部分共包含有12个函数,分别是:%STR、%NRSTR、%QUOTE、%NRQUOTE、%BQUOTE、%NRBQUOTE、%SUPERQ、%UNQUOTE、%QSAN、%QSUBSTR、%QSYSFUNC、%QUPCASE

其中后4个函数有对应的普通宏函数,其主要功能是类似的

SAS学习笔记44 宏函数的更多相关文章

  1. SAS学习笔记41 宏变量存储及间接引用

    Macro Variables存储在“Symbol Table”中.它是由Macro Processor在SAS启动时自动创建并维护的.SAS提供了一张视图来供我们查看Symbol Table中的内容 ...

  2. SAS学习笔记46 宏变量的可使用范围

    全局宏变量 在宏程序内部,除了使用%GLOBAL语句创建.在某些情况下,还可以直接使用DATA步中的CALL SYMPUT创建. 在一个宏程序中,在包含CALL SYMPUT的DATA步程序之前,如果 ...

  3. SAS学习笔记43 宏语句

    流程控制 %GOTO语句与%label语句是结合起来使用的.首先通过%label语句定义一个位置,使用%GOTO语句可直接将程序的执行位置跳到该label标记位置,达到控制程序执行顺序的目的.可实现与 ...

  4. SAS学习笔记42 宏程序

    Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用 其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting): K ...

  5. SAS学习笔记37 宏程序中parmbuff选项

    该选项用于指定宏可以接受可变参数列表,而且参数值保存在SYSPBUFF宏变量中.parmbuff的参数价值,其实就是每次执行宏程序时,可以指定不同数量的参数值,这些宏参数被保存在&syspbu ...

  6. SAS学习笔记10 宏变量

    一个宏变量存放的值保持不变直到被修改(全局变量) 引用时,变量名前加上"&" 宏变量在引用时放在双引号之间会被解读(单引号不会被解读) 用户定义的宏变量,有三种方式: %l ...

  7. SAS学习笔记2 基础函数应用

    输入输出语句(put和input函数) put()函数:把数值型或字符型变量转为字符型变量(输出变量) input()函数:将字符型变量转化为数值型变量(输入变量) 选择与删除语句(keep.drop ...

  8. SAS学习笔记20 CAT函数

  9. SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(5)SAS宏语言.SQL过程 1. 一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) ...

随机推荐

  1. 调整 全局jvm 大小 tomcat 调整jvm大小

    z最近公司换了一个线上的windows服务器,原来的内存48g,现在2g.项目启动报内存不足.又重新安装jre 安装jre 教程链接:(谢谢各位博友) https://www.genban.org/t ...

  2. Matrix: Matrix的,postScale(), postTranslate()方法

    Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种,每一种变换在Android的API里都提供了set, post和pre三种操作方 ...

  3. js的Map实例

    1.创建实例 let map= new Map(); // 创建 2.对map的写入 // 要添加的对象 let obj1 = {name:'张三', sex:'boy',age: 21}; let ...

  4. 深入理解DefaultMessageListenerContainer

    DefaultMessageListenerContainer是一个用于异步消息监听的管理类. DefaultMessageListenerContainer最简单的实现逻辑,一个任务执行器,执行任务 ...

  5. YApi内部部署文档

    旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API 1.安装Node.js环境(7.6+) 1.官网下载适合的nodejs版本放置在/usr/package ...

  6. Vue.js学习之简介(待续)

    Vue.js 渐进式JavaScript 框架 易用:已经会了 HTML.CSS.JavaScript?即刻阅读指南开始构建应用! 灵活:不断繁荣的生态系统,可以在一个库和一套完整框架之间自如伸缩. ...

  7. CentOS7下搭建zabbix监控(四)——Zabbix报警设置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 CentOS7下搭建zabbix监控(三)——Zabbix ...

  8. PAT 甲级 1043 Is It a Binary Search Tree (25 分)(链表建树前序后序遍历)*不会用链表建树 *看不懂题

    1043 Is It a Binary Search Tree (25 分)   A Binary Search Tree (BST) is recursively defined as a bina ...

  9. PAT 甲级 1034 Head of a Gang (30 分)(bfs,map,强连通)

    1034 Head of a Gang (30 分)   One way that the police finds the head of a gang is to check people's p ...

  10. (八)利用apache组件进行文件上传下载

    一.文件上传 文件上传,即服务器端得到并处理用户上传的文件,这个文件存放在request里,也就是需要对request进行处理. 1.1 编写html文件 <!DOCTYPE html> ...