SAS学习笔记44 宏函数
类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 宏函数的更多相关文章
- SAS学习笔记41 宏变量存储及间接引用
Macro Variables存储在“Symbol Table”中.它是由Macro Processor在SAS启动时自动创建并维护的.SAS提供了一张视图来供我们查看Symbol Table中的内容 ...
- SAS学习笔记46 宏变量的可使用范围
全局宏变量 在宏程序内部,除了使用%GLOBAL语句创建.在某些情况下,还可以直接使用DATA步中的CALL SYMPUT创建. 在一个宏程序中,在包含CALL SYMPUT的DATA步程序之前,如果 ...
- SAS学习笔记43 宏语句
流程控制 %GOTO语句与%label语句是结合起来使用的.首先通过%label语句定义一个位置,使用%GOTO语句可直接将程序的执行位置跳到该label标记位置,达到控制程序执行顺序的目的.可实现与 ...
- SAS学习笔记42 宏程序
Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用 其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting): K ...
- SAS学习笔记37 宏程序中parmbuff选项
该选项用于指定宏可以接受可变参数列表,而且参数值保存在SYSPBUFF宏变量中.parmbuff的参数价值,其实就是每次执行宏程序时,可以指定不同数量的参数值,这些宏参数被保存在&syspbu ...
- SAS学习笔记10 宏变量
一个宏变量存放的值保持不变直到被修改(全局变量) 引用时,变量名前加上"&" 宏变量在引用时放在双引号之间会被解读(单引号不会被解读) 用户定义的宏变量,有三种方式: %l ...
- SAS学习笔记2 基础函数应用
输入输出语句(put和input函数) put()函数:把数值型或字符型变量转为字符型变量(输出变量) input()函数:将字符型变量转化为数值型变量(输入变量) 选择与删除语句(keep.drop ...
- SAS学习笔记20 CAT函数
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程
SAS学习笔记之<SAS编程与数据挖掘商业案例>(5)SAS宏语言.SQL过程 1. 一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) ...
随机推荐
- codeforces319C
C. Kalila and Dimna in the Logging Industry time limit per test 2 seconds memory limit per test 256 ...
- Tcl模块化
Proc 过程名 参数列表 过程体 示例代码(斐波那契数列): proc fib {num} { if {$num<=2} {return 1} return [expr [fib [expr ...
- linux系统普通用户设置密码
linux系统中如何给一个普通用户grindnt设置密码 一.新密码符合规则,用以下方式修改: #root用户直接更改gridnt密码,不需要输入旧密码 [root@subsname home]# p ...
- 实现一个hoverDelay延迟hover
实现一个hoverDelay延迟hover author: @TiffanysBear 需求背景 经常在页面开发中,需要使用hover事件来触发相应的网络请求或页面DOM元素显示切换,需要考虑的问题就 ...
- arcgis python 不知道一个工具怎么用
完整的工具帮助信息 import arcpy print(arcpy.Usage("Buffer_analysis")) print(arcpy.Usage("MakeF ...
- Flutter移动电商实战 --(50)持久化_shared_preferences
当app关掉了.再进去的时候 ,购物车的内容还是存在. sqflite提供这个来操作SQLite数据库 flutter提供三种持久化的工具 今天要学的就是 shared_preferences 还有一 ...
- keras 在train_on_batch中启用tensorboard
def write_log(callback, names, logs, batch_no): for name, value in zip(names, logs): summary = tf.Su ...
- C语言练习,可以解析协议,主机,路径,询问,片段等
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> ...
- React——相关工具概述
Create a New React App Use an integrated toolchain for the best user and developer experience. This ...
- 算法习题---4-6莫尔斯电码(UVa508)
一:题目 A-Z0-9分别对应一些莫尔斯电码字符串 A .- B -... C -.-. D -.. E . F ..-. G --. H .... I .. J .--- K -.- L .-.. ...