Macro系列导读
SAS Macro作为SAS高手不可或缺的一项技能,是因为它功能足够强大,能极大的提升程序开发效率;使你的时间和精力投入在更有价值的事情上。
Macro系列文章,将会逐一奉上SAS Macro的点点滴滴,带你踏上从认识Macro到熟练使用Macro之路。掌握SAS Macro,将会使你的SAS编程能力更上一层楼。
上
期
上期文章“Macro Statements(2)”对第二部分,既能在宏内部使用,又可以在宏外部使用的共16个语句进行了介绍说明,其中比较常用的主要就是有关宏变量的语句。
回
顾
Macro系列(9)—Macro Function
本期文章将对宏语言中的宏函数进行介绍。其中有部分宏函数与SAS函数无论是名字、语法、功能基本都是一致的;其余函数为宏语言所特有的。接下来按照功能分七部分,分别进行介绍。
1. 类SAS函数的宏函数
该部分函数共5个,其无论是名字、语法、功能都与SAS函数类似,只是在函数名前多了一个“%”。这5个宏函数分别是:
%INDEX
%LENGTH
%SCAN
%SUBSTR
%UPCASE
这5个宏函数与其对应的SAS函数功能是一致的,区别就在于宏函数的参数一般都是宏变量,SAS函数的参数一般都是DATA步中的变量(当然,也可以使用宏变量)。
需要注意的一点是%INDEX,%SCAN这两个函数,其对应的SAS函数INDEX,SCAN;在INDEX查找指定的文本串,及SCAN中指定分隔符时,需要用引号将其内容引起来;而%INDEX,%SCAN则不需要引号。因为在宏语言中所有的东西都是文本,因此不需要用引号特别指定是文本。
示例程序一:
data_null_;
str="this is a string.";
a=index(str, "is");
b=length(str);
c=scan(str, 1, "is");
d=substr(str, 1, 4);
e=upcase(str);
put a= / b= / c= / d= / e=;
run;
日志结果:
示例程序二:
%let str=this is a string.;
%let a=%index(&str, is);
%let b=%length(&str);
%let c=%scan(&str, 1, is);
%let d=%substr(&str, 1, 4);
%let e=%upcase(&str);
%put a=&a;
%put b=&b;
%put c=&c;
%put d=&d;
%put e=&e;
日志文件:
示例程序三:
%let str=this is a string.;
%l