欢迎来到天天文库
浏览记录
ID:33964862
大小:151.00 KB
页数:16页
时间:2019-03-02
《第10章 sas宏功能》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第10章SAS宏功能10.1概述SAS系统的MACRO处理器可以让程序更简洁更明了及更容易维护,帮助用户在使用SAS系统时更方便更自动化,具体来说,它具有以下功能:1.获取SAS的系统信息;2.有条件地执行数据步和过程步;3.开发交互式系统;4.在不同的数据步和过程步之间传递数据;5.重复执行SAS代码等等。.SAS宏语言的管理1.MACRO变量2.MACRO程序语句3.MACRO表达式和函数10.2SAS宏变量的使用与定义宏变量(有时也称符号变量)属于SAS宏语言的范畴,和数据步中的变量的概念是不一样的。除了数据行外,你可以在SAS程序的任何地方定义和使用宏变量。数据步变
2、量是和数据集相联系的,而宏变量是独立于数据集的。数据集变量的值取决于正在处理的观测,而一个宏变量的值总是不变,直到被明确改变。宏变量类似于一般变量的命名方法。程序中以&宏名来引用MACRO变量(有时为了清晰起见,也可以通过&宏名.来引用MACRO变量)SAS宏变量共有两种:1.系统宏变量2.用户自定义的宏变量。10.2.1系统宏变量一些系统宏变量01/*Program_10-l-l.sas*/02DATA_NULL_;03PUT'SYSDATE='"&SYSDATE";/*执行时的日期*/04PUT'SYSDAY='"&SYSDAY";/*执行时是星期几*/05PUT'SY
3、SENV='"&SYSENV";/*交互模式或批次模式*/06PUT'SYSSCP='"&SYSSCP";/*返回正在用的操作系统*/07PUT'SYSJOBID='"&SYSJOBID";/*程序的操作执行代码*/08PUT'SYSERR='"&SYSERR";/*程序执行的错误码*/09PUT'SYSRC='"&SYSRC";/*程序执行的回复码*/10PUT'SYSLIBRC='"&SYSLIBRC";/*使用LIBNAME时设置是否正确*/11PUT'SYSFILRC='"&SYSFILRC";/*使用FILENAME时设置是否正确*/12RUN;使用宏语句%put
4、_automatic_;可以查看所有的系统宏变量,结果显示在LOG窗口。SYSDATE=20OCT08SYSDAY=WednesdaySYSENV=FORESYSSCP=WINSYSJOBID=384SYSERR=0SYSRC=0SYSLIBRC=0SYSFILRC=0NOTE:DATAstatementused:realtime0.03secondscputime0.01seconds10.2.2用户自定义宏变量等号右边可以是数值或字符串表达式,字符串用引号括起来.字符串前后的空格赋值前被删除。定义方法及其使用:%LETmac_var=取值等号左边是宏名.定义好的MACR
5、O变量可以在不同的SAS数据步或过程步中重复使用,该MACRO变量的值不会改变.引用时直接用&宏名.即可.宏变量定义可以放在程序的任何位置,但在使用之前一定要定义好.例101/*Programs10-2-l.sas*/02%LETmm=07;03DATAoutl;04FORMATvar_aYYMMDD10.;05INPUTvar_a:YYMMDD6.;06IFmonth(var_a)=&mm;07DATALINES;08010203090107211001032211010723120101031301040214;16PROCPRINT;17TITLE"数据月份:&mm"
6、;18RUN;注:这里的标题必须用双引号括起来,而不能用单引号,因为宏处理器只对双引号中引用的宏变量进行这种处理,而把单引号中的所有字符都看作是标题的内容。结果:数据月份:0707:57Wednesday,October20,20082Obsvar_a12001-07-2122001-07-23注:如果要查看用户自定义的宏变量,可以提交语句%put_USER_;如果要查看所有宏变量,可以提交语句%put_ALL_;可将SAS的一段程序设为MACRO变量例2一个宏变量代表一行语句时01/*Program_10-2-3.Sas*/02%LETmm=INPUTvar_a:YYMM
7、DD6.;03DATAoutl;04FORMATvar_aYYMMDD10.;05&mm;06DATALINES;07010203080107210901032210010723110101031201040213;14RUN;一些宏函数1)宏函数%str例3一个宏变量代表多行语句时,可用宏函数%str来实现01/*Program_10-2-3_2.sas*/02DATAout1;03INPUTIncomeAge;04DATALINEs;051500230626003507200028083000300918001
此文档下载收益归作者所有