第9章宏过程_第1页
第9章宏过程_第2页
第9章宏过程_第3页
第9章宏过程_第4页
第9章宏过程_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第9章章 宏过程宏过程宏过程 v宏过程扩展了SAS的功能,实现了功能的重复利用。通过宏过程可以把数据步或过程步的功能进行封装,在宏过程中可以定义参数,通过调用宏过程把实参传递给形参进行引用。v宏过程就相当于关系数据库中的存储过程,调用时只需要知道宏过程名就可以,具体内部如何实现的不用去过问,实现了吃呢供需的封装。 SAS宏功能总结 (1)实现程序的重复利用,减少了文本的输入量。(2)实现了程序功能的封装。(3)实现了变量的传递。(4)获取SAS系统信息与其他系统的交互。(5)不同数据步与过程步之间传递数据与参数。1.用户定义宏变量 v宏变量和数据步中的变量不同,宏变量可以在SAS程序的任何地

2、方引用和定义,属于弱类型语句。v宏变量有两种,一种是用户定义的宏变量,一种是SAS系统内部具有的自动宏变量。v对于用户定义的宏变量,用户可以给变量赋值,也可以为空,可以指定范围,通过%global声明可以定义全局宏变量,默认是全局宏变量。定义宏变量v%let 宏变量名 ;v%let: 定义宏变量的关键字。v宏变量名:用户在定义宏语句中的变量名,命名遵守SAS命名规范。v:宏变量根据需求直接赋实际值,可选项。v对宏变量,如果需要实际赋值,可以直接赋值,不需要另外定义,SAS程序属于弱类型语言。宏变量引用v对于宏变量的引用,需要“&”符号,具体语法如下:v宏变量引用语法: &宏名。

3、v【注意】间接引用宏变量要用两个&符号,如“&v_var1.&v_var2”,这里的点“.”属于间接引用分隔,告诉SAS系统是两个宏变量,“&v_var1”中的第一个“&”符号是告诉SAS系统启动宏token解析器,然后读到“&v_var1”引用此宏变量。2.SAS系统内部自动宏变量 v所谓的自动宏变量是SAS系统内部已经定义好的变量,不需要用户再定义,用到时直接调用。v_Automatic: 查看所有系统自动宏变量vSYSDATE: 查看当前日期;vSYSVER : 查看SAS当前的版本;vSYSLAST: 查看SAS当前最新生成的数据集信息;

4、 2.SAS系统内部自动宏变量 vSYSTIME: 查看当前系统时间;vSYSSCP : 查看用户使用的操作系统;vSYSDAY : 查看当前星期几;v _all_: 查看用户创建的宏变量v_user_: 查看用户定义的宏变量v_global_: 查看用户定义的全局宏变量v_local_: 查看用户定义的局部宏变量2.SAS系统内部自动宏变量 v对于SAS系统内部具有的自动宏变量,可以通过这些变量查询一些系统信息,通过宏语句%put可以直接调用这些自动宏变量。【注意】(1)对于自动宏变量_automatic_引用时比较特殊,不需要符号&,直接引用,方式为% put _automatic

5、_.v(2)对于文本串中引用宏变量,必须用双括号括起来,不能用单引号。v(3)宏变量中可以直接引用宏函数传递的值。语法如下:v%let v_var=%宏函数();宏过程v宏过程内部可以调用数据步和过程步的机制,可以包含循环和分支语句。v宏过程的语句格式:v%MACRO 宏名;v 宏功能语句;v%MEND ;宏过程语法解读%MACRO:定义宏语句开始的关键字,必选项。宏名:给宏起的名称,相当于关系数据库中存储过程 个的名称。宏参数:可选项,给宏定义的参数,多个参数用逗号 隔开。参数选项:可选项。宏功能语句: SAS宏语句,实现某些功能的SAS语句。%MEND:宏结束标志。宏名:%MEND语句中的

6、宏名为宏开始处定义的宏名, 此处指明宏结束,可选项。 v【注意】SAS中引用宏变量要加“&”符号。宏过程可以通过“%put”语句把宏变量值输出到日志窗口,通过这个可以调试宏过程。v%put宏语句可以把信息输出到日志窗口,帮助调试程序。v语法格式: %put ;v语法解读: %put :输出宏语句,如果后面不带选项语句,则输出一个空行到日志窗口。v功能:通过%put宏语句把文本内容或宏变量内容输出到日志窗口。宏过程调用v% 宏过程名;v%: 调用宏过程的关键字,必选项v宏过程名:宏过程中定义的宏名v表9-4 常用宏语句说明宏语句宏语句说明说明%abort结束当前宏运行,属于宏定义中的语句

7、%copy从SAS宏逻辑库中赋值指定的对象%global创建全局宏变量语句%local创建局部宏变量语句%let定义宏变量语句%put输出文本或宏变量信息到日志窗口显示%if %then %else条件选择宏语句%do %until重复执行语句块中的宏语句,直到until后条件为真%do %whileWhile 语句后条件为真时,重复执行语句块中的宏语句%do %to循环宏语句%do %end宏子功能块语句%do %to循环迭代语句宏变量创建方法与分类v分为全局宏变量和局部宏变量v两者主要区别:全局宏变量在程序的任何地方都可以引用,而局部宏变量只在宏过程内部有效v1.全局宏变量v1)宏之外创建

8、的全局宏变量:在宏过程体外创建的、一般通过%let语句定义的宏变量。v2)通过%global语句定义的全局宏变量v% global 宏变量名v【注意】多个宏变量名用空格分隔v3)除sysbuff外的所有自动生成的全局宏变量v4) call symput语句生成的全局变量v此语句用在数据步中,通过数据步过程中生成的值传递给宏变量。v语法格式:Call symput (宏变量,指定值);v语法解读:通过call symput语句把“指定值”传递给宏变量。如果传递的值为字符串要用单引号。v2.局部宏变量v1)%local 语句中定义的宏变量v宏语言中通过%local语句定义宏变量,该变量只在宏过程中

9、有效,其他宏过程、数据步和过程步不能调用。v语法格式:% local 宏变量名;v【注意】多个宏变量名用空格分隔v2)宏过程中宏参数定义的宏变量v宏过程中宏参数变量属于局部宏变量,只在此宏过程中有效。v3)宏嵌套内部定义的宏变量和宏内语句生成的宏变量v对于宏嵌套内部定义的宏变量和宏内语句生成的宏变量只在此宏过程中有效,属于局部宏变量。宏函数v调用宏函数的语法:%宏函数名v1.宏计算函数v1)%eval()宏函数v函数格式: %eval (整数的数学运算)v%eval:宏函数名v整数的数学运算:整数的算术运算,如1+2、23等v功能:对整数进行算术运算v2.%sysevalf()宏函数v函数格式

10、: %sysevalf (浮点数, )v语法说明: v%sysevalf:函数名。v(浮点数, ):指明函数的浮点数,必选项。数值类型为可选项,指明浮点类型.v功能:对浮点数进行运算。v2.宏字符处理函数v表9-5 常用宏字符处理函数宏字符处理函数宏字符处理函数功能功能%trim过滤文本尾部空格%qtrim过滤包含特殊字符文本的尾部空格%length计算字符串变量长度%index查找一个字符串中字符出现的位置%substr从指定的字符串中提取子串%upcase将指定的字符串转化为大写%qscan根据特殊分隔符查找,并提取子串%scan根据指定分隔符查找,并提取字串v3.其他常用重要宏函数v表9

11、-6 其他常用宏函数宏函数宏函数功能功能% include指明包含的外部文件路径%sysfunc宏变量中调用SAS内部函数或用户自定义函数%str引用含特殊符号的固定文本,特殊符号如# %&%nrstr引用包含特殊符号的固定文本宏嵌套v宏嵌套就是宏过程调用宏过程。v语法格式: %macro 宏名 ;v% 宏名1;v% 宏名1;vv%mend 宏名;v宏内部的% 宏名1、 % 宏名2等都是已经编写好的程序,此宏对这些过程进行了嵌套调用。宏过程调用数据步v语法格式: %macro 宏名 ;v数据步程序;v% mend 宏名;v【语法解读】宏过程中封装了数据步程序,同时宏过程中定义的参数可以

12、传递给数据步中引用,实现了传递参数的功能宏过程调用过程步v宏语言可以和过程步联合应用,把过程步的程序封装在宏过程中,用户直接调用此宏过程,就可以实现过程步的功能。v语法格式:% macro 宏名 ;v过程步程序;v% mend 宏名;v【语法解读】宏过程中封装了过程步程序,同时宏过程中定义的参数可以传递给过程步引用,实现了传参功能。sql过程引用宏变量vSql过程查询信息赋值给宏变量的语法:vSelect 变量名 into: 宏变量名 formv表名 条件语句;v【语法解读】查询语句信息赋值给宏变量是通过冒号“:”加宏变量名的方式引用的。如果是查询当前work逻辑库数据集可以省略逻辑库名;如果是查询永久逻辑库或关系数据库中的表信息,需要带逻辑库名。v1.sql过程查询数据步生成的数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论