SAS软件SAS语言的宏功能

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在宏的引用过程中,当词段扫描器识别一个宏变量名称 时,从&开始直到遇到一个SAS名称中不允许出现的字符 为止。所以空格等一些不允许出现在SAS名称中的字符就 可以作为分隔符出现,但是为了不显示这些分隔符,一般 使用句号来作为分隔符使用。
2.5 间接引用宏变量
前面提到的使用&变量名来引用宏的方式是直接引用,有 时还会用到很有用的间接引用方式。如对一系列的宏变量 引用,如data1,data2, data3, 这一系列中部分文本是固定 的名称,而另一部分是变化的数字。这时就可以采取间接 引用方式。
5.1 宏do循环语句
2).直到型循环 格式:%Do %Until (表达式);
循环体; %End; 3).当型循环 格式:%Do %While (表达式);
循环体; %End; 注:当型循环和直到型循环需自己设置一个宏变量作为循 环变量,对循环变量累加赋值时需使用函数%eval( )来计 算算术表达式的值,见程序。
例3:多次引用宏
例4:宏变量的值为一段完整的程序段。
注:(1)必须使用%str( )函数围住宏变量的值,以后用 &d来引用此段程序。
(2)此例中使用了宏变量嵌套。
2.3 显示宏变量的值
格式:%put &宏变量名 | 其它文本text;
2.4 如何隔开宏变量引用和文本
在混合使用宏变量引用和文本的时候,会遇到宏变量后面 紧跟着文本的情况。 如定义宏变量name后,当使用 &name1,&name2时,如果不定义name1和name2这两个 宏变量,系统就会提示这两个宏变量并不存在,因为在 SAS识别宏变量的时候,自动将name1和name2当成了宏 变量的名称。
2.2引用宏变量
宏变量定义以后,可以通过在其名称前使用&来对其引用。 例1:引用宏变量a的程序段:
上段程序等价于: data a; set Sasuser.class; run;
例2:在带有引号的文本中引用宏变量时,需要将这个文 本字符串用双引号括起来。如:
注:在引号内引用宏变量的值时必须用双引号。因为宏处 理器只能在双引号内进行替代。
宏工具的功能非常强大,使用宏工具来完成以下任务: 使用宏变量实现文本替代; 使用宏产生程序语句; 使用宏循环及条件判断语句完成程序交互。
实例:
在 工 作 目 录
(d:\mysasfile)下有
4个文件,文件名为 df1.txt,df2.txt,df3.txt,df4 .txt 。 它 们 代 表 4 个 推 销 员的销售业绩,每个文 件格式相同,都包括日 期和销售额。现要求把 这4个推销员的记录读入 到SAS中,分别生成4个 数据集,然后合并成一 个大数据集。
3.2 宏的调用
用一个百分号%加宏名字就可以调用一个宏。 例8:宏的定义与调用
4.宏参数
定义带参数的宏的一般形式为: %macro 宏名称(参数1,参数2,….); …宏文本; %mend;
说明:其中参数列是逗号分开的参数名,参数列 中提到的参数在宏文本中作为宏变量引用
调用带参数的宏的一般形式为: %宏名称(参数1,参数2,….);
主要内容
2.1定义宏变量 2.2引用宏变量 2.3 显示宏变量的值 2.4 如何隔开宏变量引用和文本 2.5 间接引用宏变量
2.1定义宏变量
最简单定义宏变量的方式是使用程序语句%LET。 格式: %LET 宏变量名=值; 如: %let dsn=sasuser.class; 注意如果宏变量dsn已经存在则其值会被替换掉.
2.宏变量
宏变量的用途是替代SAS程序文本,宏变量Leabharlann Baidu的最大长度 是65534个字符。宏变量的长度是由自身的文本长度决定 的,而不是通过设定得到的。
宏变量按照使用范围分类:全局宏变量和局部宏变量。 全局变量可以在SAS对话运行期间使用并且可以在程序 的任何地方引用 局部变量则只能在创建该局部变量的宏中使用,在这个 宏之外,这个局部变量就没有任何意义。
例12:利用宏do while循环,输出文本1 2 3...10 。
5.2 条件判断语句
格式:%If 表达式 %then 语句1;
% Else 语句2;
注:当语句为复合语句时,需用%do …%end结构。
动手练习:利用宏编写一个求绝对值的程序:
3.宏
概念:宏是被编辑过可以从SAS程序中调用 的程序
主要内容:
3.1宏的定义 3.2 宏的调用
3.1宏的定义
一般格式为: %Macro 宏名; …宏文本; %Mend [宏名];
说明: %macro语句表示开始一个宏定义,并给宏规定一个 名称; 宏的文本可以是SAS语句和程序、宏变量、宏函数或 宏语句。 %Mend语句表示宏的结束,后面加宏名,也可不加。 当一个宏被提交时,系统会对它进行宏编译,但并不 执行。检查宏语句的语法,若有错误在Log窗口中显 示。
返回
1.SAS/IML模块
1.1SAS/IML模块简介 1.2 IML 变量 1.3启动和退出SAS/IML模块 1.4 设置和关闭IML交互模型
返回
1.概述
宏工具是一种可以用来扩展SAS功能,减少普通工作文本 输入量的SAS工具。宏工具可以给一段文本或SAS程序命 名,并通过引用这个名称来使用这段程序或文本。
说明:每个参数值将赋予宏定义中相应位置的参 数。
例9:宏参数的定义与调用
例10:宏内调用宏
5.宏内流程控制结构
5.1 宏do循环语句 5.2 条件判断语句
5.1 宏do循环语句
1)计数型循环 格式: %Do 循环变量 = 初值 %to 终值 [%By 步长];
循环体; %End; 注:执行循环体时循环变量是一个宏变量i。 例11:利用宏do循环,输出文本1 2 3...10 。
SAS语言的宏功能
本章教学目的:
了解SAS宏的功能和特点
掌握SAS宏变量的定义与调用
掌握SAS宏及宏参数的定义与调用
掌握SAS宏语言的流程控制结构
了解宏与数据步的信息交换子程序
返回
本章内容:
1.概述 2.宏变量 3.宏 4.宏参数 5.宏内流程控制结构 6.宏与数据步的信息交换 7.宏语句与宏函数
相关文档
最新文档