sas宏编程

上传人:n**** 文档编号:84765766 上传时间:2019-03-04 格式:PPT 页数:48 大小:306KB
返回 下载 相关 举报
sas宏编程_第1页
第1页 / 共48页
sas宏编程_第2页
第2页 / 共48页
sas宏编程_第3页
第3页 / 共48页
sas宏编程_第4页
第4页 / 共48页
sas宏编程_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《sas宏编程》由会员分享,可在线阅读,更多相关《sas宏编程(48页珍藏版)》请在金锄头文库上搜索。

1、第3章 SAS宏编程,学习目标,掌握宏变量的定义以及引用; 熟悉宏变量的特殊用法; 掌握宏的定义; 掌握宏的调用;,SAS宏功能,将一个变量,一段程序或者一个文本命名,供以后调用,是用于扩充和制做用户化SAS系统的工具;利用宏功能用户可以减少在完成一些共同任务时必须输入的文本量。当用户在某个SAS程序中使用宏功能时,这个宏功能产生所需要的SAS语句和命名,SAS系统的其余部份接受这些语句和命令。,SAS宏的主要功能,获取SAS的系统信息。SAS在启动时就创建了一些自动宏变量,用以存储当前SAS进程启动的日期,时间,版本号及其它信息,用户可以在任何情况下使用这些宏变量。 有条件的执行数据步和过程

2、步。例如每天提交一份生产情况的详细报告,每周五增加一份汇总报告。使用宏功能每天运行同一个程序就可以实现上述任务。 开发交互式系统。使用SAS宏语言的%WINDOW语句及一些基本的编程语句可开发交互式用户界面。,SAS宏的主要功能,产生与数据无关的SAS程序,但可展示与数据相关的结果。宏功能可保持SAS程序的独立性和移植性。一段程序在多种情况下均可运行,得到期望的结果。 在不同的SAS数据步和过程步之间传递数据。SAS宏变量可在SAS的任何地方被引用,具有全局性,所以成为不同过程间传递数据最方便的手段。 重复执行SAS程序码。凡用到SAS宏语言的变量和语言成分,都以符号%或&开始。当SAS程序提

3、交后,在编译阶段,系统对程序逐词扫描过程中,凡遇到%或&开始的词,就启动宏语言处理器对此进行处理。,宏变量,宏变量属于SAS宏语言,但不同于DATA步变量。可以在SAS程序除数据行之外的任何地方定义并使用宏变量。一个DATA步变量仅与一个SAS数据集有联系,而宏变量不依赖于SAS数据集。宏变量与数据步中变量的主要区别是,数据步中变量的值往往与被处理观测有关,而宏变量有唯一确定的值,一个宏变量存放的值保持不变直到被修改。,宏变量,宏变量具有唯一确定的值,可以存储字符串,是全局变量。可以在数据步中被引用,但不能在数据步中用赋值语句定义。引用时,在变量名前加“&”号,引用效果是变量值代替变量名。宏变

4、量在引用时放在单引号之间不会被解读,只能在双引号之间。,宏变量的产生,SAS系统包含两种类型的宏变量: 自动宏变量,由SAS系统提供; 用户定义的宏变量,由用户在程序中定义。,自动宏变量,在SAS进程开始时,或程序运行过程中由系统自动创建,在SAS退出前一直保持有效,是全局宏变量,能在SAS任何地方被引用。以下是一些主要的自动宏变量: SYSDATE SAS进程开始的日期; SYSDATE9 以Date9.格式显示SAS进程开始的日期; SYSTIME SAS进程开始的时间; SYSSCP 使用的操作系统; SYSDAY SAS进程开始是为星期几; SYSVER SAS的版本; SYSLAST

5、 最新创建的SAS数据集的名字;,定义宏变量,有两种方式定义宏变量:%LET和call symput。定义宏变量并分配一个值给宏变量的最简单方法是使用宏程序语句%LET。格式如下: %LET 变量名=变量值; 另一个语句就是call symput,其格式如下: call symput(变量名,变量值);,宏变量的引用,为了引用一个宏变量的值,放一个,多次引用宏变量,用户根据SAS程序中的需要可以多次引用宏变量。宏变量的值保持不变直到其被修改。 每次出现引用&exa,宏处理器用score替代它。,改变宏变量的值,在上例中,如果用户想要改变SAS数据集名字,可以在它出现的这段程序中通过改变宏变量的

6、值来实现,嵌套宏变量引用,可以使用嵌套的宏变量引用来改变一个长的宏变量值而不必重新定义这个变量。例如,为了改变在PROC PLOT步中的两个画图变量,在PLOT的这个值中使用宏变量引用。,宏的定义,宏是一个被存贮的文本,用一个名字识别它。最简单的宏就像一个宏变量一样工作,但复杂的宏可以完成许多宏变量不能做的事。定义宏的语句格式为: %MACRO 宏名称; 宏文本 %MEND ;(默认存放在work.sasmacr中); %MACRO语句是每一个宏的开始,同时必须给出这个宏的名字。宏名字的命名准则与SAS名字一样。宏的文本也就是宏的内容,宏内的字符串称为固定文本或模型文本,该文本将变为用户SAS

7、程序的一部分。%MEND语句必须围住每个宏并表示宏的介绍。%MEND语句也可以放上宏名字来说明该宏已结束。,宏的调用,为了调用一个宏,放一个百分数符号(%)在宏名字前面就可以了,比如:%study 模式“%宏名称”称为宏的调用。当用户定义一个宏之后,可以在SAS程序中调用它,如: Title “Display of school %study”; 宏处理器执行宏STUDY,把宏里面的固定文本替代到TITLE语句中。TITLE语句变为: Title “Display of school Student score”;,宏的调用,SAS程序可以包括任意多个宏,且在一个程序中可以多次调用一个宏。对于

8、简单文本的阐明,使用宏变量比定义一个宏更有效。然而,当任务比较复杂时,宏比宏变量更有优势。 把宏变量和宏结合在一起,将给出一种用宏工具编程的强有力的方法。下面我们将介绍在宏中使用宏变量的多种方法。,宏参数,可以定义宏变量作为%macro语句的一部分,如: %macro printClass(class); proc print data=,宏参数,对参数分配的值只在这个宏执行过程中有效。因此第二次调用宏时,还是要给出参数的值。宏参数是局部宏变量的一个例子。而宏变量是从用户创建它们直到SAS作业或SAS会话结束都存在;故前面介绍的宏变量为全局宏变量。 使用参数有以下几个优点: 用户可以少写几个%

9、LET语句; 调用宏时不需要知道这些参数的名字,只需要提供这些值的类型; 使用参数可以保证该变量在宏之外的程序部份不会被引用。,宏的循环结构,宏的循环语句有三种类型,分别是 宏中DO循环语句的格式为: %do 指标变量=始点 %to 终点(BY 增量); 文本或宏程序语句; %end; %do %while(表达式); /*先判断再执行*/ 文本; %end; %do %until(表达式); /*先执行再判断*/ 文本; %end;,宏的循环结构,以生成重复的文本段为例说明如何使用宏的循环结构。假定用户想生成一系列名字用于某个SAS语句。可以写一个宏来产生具有相同前缀的一系列名字。 用示例说

10、明宏CREATE用重复%DO循环开生成名字:,本章小节,SAS宏功能将一个变量,一段程序或者一个文本命名,供以后调用,是用于扩充和制做用户化SAS系统的工具;利用宏功能用户可以减少在完成一些共同任务时必须输入的文本量。介绍了SAS宏的主要功能,包括:获取SAS的系统信息、有条件的执行数据步和过程步、开发交互式系统、产生与数据无关的SAS程序但可展示与数据相关的结果、在不同的SAS数据步和过程步之间传递数据和重复执行SAS程序码。我们对SAS宏功能作略微了解。,本章小节,宏变量属于SAS宏语言,但不同于DATA步变量。宏变量具有唯一确定的值,可以存储字符串,是全局变量。SAS系统包含两种类型的宏

11、变量:自动宏变量,由SAS系统提供;用户定义的宏变量,由用户在程序中定义。有两种方式供用户定义宏变量。为了引用一个宏变量的值,放一个&号在宏变量名字的前面。通过对本节对宏变量的介绍,我们需要注意宏变量与数据步变量的区别,了解两种类型的宏变量,掌握如何定义宏变量。,本章小节,本章阐述了引用宏变量的四种方式:多次引用宏变量、改变宏变量的值、创建包含SAS语句的宏变量值和嵌套宏变量引用。同时,介绍了宏变量的一些特殊用法,包括%STR宏函数、%eval宏函数、%sysfunc宏函数、字符串中引用宏变量、在数据步执行中生成宏变量和%symget宏函数。我们需要掌握引用宏变量的方法,并了解其特殊用法。,本

12、章小节,详细讲解了宏的定义和调用问题,尤其是在宏中使用宏变量的方法,包括宏参数、宏调用宏、宏的分支结构、宏的循环结构。文章用实例说明了各种应用方法以及注意要点,在学习过程中,我们需要深刻理会这些实例的含义。通过本章的学习需要掌握定义宏的语句格式以及如何调用定义的宏。并在学习中注意宏与数据步中条件表达式的区别。,谢谢!,SAS输出传送系统(ODS),学习目标,熟悉ODS的功能以及传送目标; 掌握几类常见的ODS语句格式; 掌握常见的ODS语句的作用、应用以及注意事项;,ODS功能,在以前各章提到的数据及其加工结果的输出中,最常用的方式是在OUTPUT窗口以文本的形式显示分析结果,而图形则在GRA

13、PH窗口显示图形。这些显示方法都有一定的局限性: 在OUTPUT窗口的结果不便于转换成SAS数据集作进一步的分析处理; 在OUTPUT窗口是等宽的字体列表方式显示的,它的表格无法在其它字体的环境下使用; 每个过程提交后其输出是一个整体,难于进行挑选。,ODS功能,SAS系统中仅有部份过程可以将输出的结果存为SAS数据集,而且存入SAS数据集的数据也不全面。此外,为了便于利用INTERNET进行交流沟通,迫切需要将数据加工输出的各种信息存为HTML(超文本)文件格式。基于以上考虑,SAS系统开始提供了ODS(Output Delivery System输出传用系统)。它主要就是为了更方便、灵活地

14、使用SAS系统的各个过程的加工结果。,ODS功能,ODS的主要功能为: 对每个过程的加工结果分为一个或多个对象,使用者可选择全部或部份对象输出显示; 对每个过程的输出对象,可选择不同的传送目标和显示格式; 挑选和剔除过程输出的某些部份; 将过程的输出生成数据集; 对输出表格进一步客户化; 在交互操作环境的结果窗口组织和管理输出的对象。,ODS功能,ODS将每个过程步的输出根据其内容的属性分为一个或多个对象,每个对象由两部分构成: 数据部份:输出的内容包括数值或字符; 模板部份:也称为表的定义,描述输出的内容在输出显示时如何布局。,ODS功能,ODS为输出对象提供的传送目标包括: OUTPUT:

15、生成SAS数据集 LISTING:在OUTPUT和GRAPH窗口显示 HTML:生成HTML格式文件 PRINTER:生成*.ps,*.pcl,*.pdf文件或直接在打印机输出 RTF:生成*.rtf文件,ODS语句,ODS的管理通过ODS语句来实现。ODS语句是全局语句,可以在SAS程序的任何地方出现。ODS语句控制ODS的各个特征,它有以下几类: 打开和关闭ODS目标的语句: 管理输出对象的语句: 其它ODS语句,打开和关闭ODS目标的语句,ODS LISTING ODS HTML ODS PRINTER ODS OUTPUT,管理输出对象的语句,ODS TRACE ODS EXCLUDE

16、 ODS SELECT ODS SHOW 其它ODS语句 ODS PATH ODS VERIFY,缺省的Listing目标,输出结果传送至LISTING目标是缺省的状态,也就是:文本结果在OUTPUT窗口显示;而图形的结果在GRAPH窗口显示。 由于这时缺省的状态,较多的使用者熟悉这种输出结果的方式,其分析结果也以列表方式显示,且易存为文本格式的文件。 在这一状态下,若要关闭LISTING目标,可提交如下的ODS语句: Ods listing close; 打开这一目标的语句是: Ods listing;,缺省的Listing目标,由于缺省的情况下,LISTING是唯一开放的目标,所以上述程序关闭这一目标后,没有传送目标处于开放的状态,输出结果就无法传送。为此可使用语句“Ods listing;”将LISTING目标打开,这时就恢复缺省的状态。这以后再提交过程PRINT就能正常显示输出结果。 注意:由于ODS语句是全局语句,所以它设定的功能一直保持有效,直至用同类语句改变设置或进程结束为止。,缺省的Listing目标,传送目标LISTING也可将结果存入文本格式的文件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号