已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAS MACRO 简介,西南财经大学 统计学院,目标, 使用系统(或自动的) macro 变量 创建和使用用户定义的macro 变量 定义和调用 macro 程序块 定义和调用 带参数的macro 程序块 Macro程序块的if 、do使用,SAS Macro 语言,用于字符串操作的第二SAS编程语言,使用系统macro 变量,问题: PROC PRINT DATA=DEPTSALE; TITLE “到 #的部门销售额”; RUN; 你想让今天的年月日和星期几显示在Title里,用SAS怎么做? 答案: 使用系统macro变量.,PROC PRINT DATA=DEPTSALE; TITLE “到 注意: Macro变量不能在单引号内被解释.,到 26MAY07 的部门销售额 OBS DEPT YEAR SALARIES SALES 1 1 87 1000 1000 2 1 88 1000 2000 3 2 87 500 3000 4 2 88 600 2000,使用系统macro 变量,SAS系统自带的Macro变量,A partial list of automatic macro variables and their usage: SYSBUFFR text entered in response to %INPUT SYSCMD last non-SAS command entered SYSDATE current date in DATE6. or DATE7. format SYSDAY current day of the week SYSDEVIC current graphics device SYSDSN last SAS dataset built (i.e.,WORK SOFTSALE) SYSENV SAS environment (FORE or BACK) SYSERR return code set by SAS procedures SYSFILRC whether last FILENAME executed correctly SYSINDEX number of macros started in job SYSINFO system information given by some PROCS SYSJOBID name of executing job or user SYSLAST last SAS dataset built (i.e., WORK.SOFTSALE) SYSLIBRC return code from last LIBNAME statement SYSLCKRC whether most recent lock was successful,SAS自带的Macro变量,SYSMENV macro execution environment SYSMSG message displayed with %DISPLAY SYSPARM value passed from SYSPARM in JCL SYSPROD indicates whether a SAS product is licensed SYSPBUFF all macro parameters passed SYSRC return code from macro processor SYSSCP operating system where SAS is running SYSTIME starting time of job SYSVER SAS version Example: FOOTNOTE “THIS REPORT WAS RUN ON ,显示 Macro 变量,%PUT 在编译程序时把macro 变量显示在 log 窗口里. 语法: %PUT text macrovariables ; %PUT _all_; 举例: %PUT * Partial SAS Log: * 26MAR07 *,显示所有的Macro 变量,%PUT 可以显示所有的Macro 变量,方法为: %PUT _ALL_; Partial SAS Log: GLOBAL MBILLYR 99 GLOBAL SSCDEV C AUTOMATIC AFDSID 0 AUTOMATIC AFDSNAME AUTOMATIC AFLIB AUTOMATIC AFSTR1 AUTOMATIC AFSTR2 AUTOMATIC FSPBDV AUTOMATIC SYSBUFFR AUTOMATIC SYSCMD AUTOMATIC SYSDAY Tuesday,练习,练习 1: 使用你目前的计算机系统决定以下系统Macro变量的值. &SYSDAY Current day of the week &SYSTIME Current time &SYSSCP Operating system being used &SYSVER Current SAS version number &SYSDATE Current date, in DATE7. Format 练习 2: 使用系统Macro变量运行 PROC CONTENTS 和 PROC PRINT 以显示最后建立的SAS 数据集合. 把数据集合的名称放在标题里。,Exercise 1 解答,%PUT * SYSDAY = ,Exercise 1 输出,%PUT * SYSDAY = * SYSDATE = 26MAY07,Exercise 2 解答,proc contents data=,创建和使用用户定义的macro 变量,问题: 假如在一个程序中需要多次提到一个SAS数据集合, DATA PAYROLL; INPUT EMP$ RATE; DATALINES; TOM 10 JIM 10 ; PROC PRINT DATA=PAYROLL; TITLE “PRINT OF DATASET PAYROLL“; RUN; 如何只在一个地方改动名字,并且让数据集合名称出现在标题中? 解答: 使用Macro变量.,创建和使用用户定义的macro 变量, 用 %LET定义变量. 然后用 ,创建和使用用户定义的macro 变量,DATA PAYROLL; INPUT EMP$ RATE; DATALINES; TOM 10 JIM 10 ; PROC PRINT DATA=PAYROLL; TITLE “PRINT OF DATASET PAYROLL“; RUN; Notes: Macro variables are not resolved within single quotes.,创建和使用用户定义的macro 变量,用%LET 另赋一个值. %LET NAME=NEWPAY; DATA ,创建和使用用户定义的macro 变量,DATA NEWPAY; INPUT EMP$ RATE; DATALINES; TOM 10 JIM 10 ; PROC PRINT DATA=NEWPAY; TITLE “PRINT OF DATASET NEWPAY“; RUN;,创建和使用用户定义的macro 变量,赋几个SAS语句: %STR 可允许“;”等出现在命令之间. %LET NAME=NEWPAY; %LET CHART=%STR(PROC CHART;VBAR EMP;RUN;); DATA ,创建和使用用户定义的macro 变量,DATA NEWPAY; INPUT EMP$ RATE; DATALINES; TOM 10 JIM 10 ; PROC CHART;VBAR EMP;RUN; PROC PRINT DATA=NEWPAY; TITLE “PRINT OF DATASET NEWPAY“; RUN;,创建和使用用户定义的macro 变量,Macro变量可以包含其它的Macro变量 %LET NAME=NEWPAY; %LET CHART=%STR(PROC CHART DATA=,创建和使用用户定义的macro 变量,DATA NEWPAY; INPUT EMP$ RATE; DATALINES; TOM 10 JIM 10 ; PROC CHART DATA=NEWPAY;VBAR EMP;RUN; PROC PRINT DATA=NEWPAY; TITLE “PRINT OF DATASET NEWPAY“; RUN;,练习,做法: 把你的答案写在纸上. 用%PUT 语句检验你的答案. 练习3: 在执行完以下的 %LET 语句之后 %LET A=ANDY; %LET B=1999; %LET C=CANES; %LET D=DECEMBER 31,; %LET E=“TREMENDOUS“;,练习3 (continued),这些%PUT语句的输出结果是什么? %PUT ,练习3 解答,%LET A=ANDY; %LET B=1999; %LET C=CANES; %LET D=DECEMBER 31,; %LET E=“TREMENDOUS“;,练习3 解答,%PUT 1999 WAS A “TREMENDOUS“ SALES YEAR!,定义和调用 macro 程序块,%MACRO 和 %MEND 定义macro. 使用%macroname 调用Macro. 例子: 定义一个macro运行 PROC CHART ,然后调用 %MACRO CHART; PROC CHART DATA=,定义和调用 macro 程序块,%LET NAME=NEWPAY; DATA ,定义和调用 macro 程序块,DATA NEWPAY; INPUT EMP$ RATE; DATALINES; TOM 10 JIM 10 ; RUN; PROC CHART DATA=NEWPAY; VBAR EMP; RUN; PROC PRINT DATA=NEWPAY; TITLE “PRINT OF DATASET NEWPAY“; RUN;,练习4, 以下是一个Macro定义: %MACRO FREQ; PROC FREQ DATA= %FREQ,练习4解答,PROC FREQ DATA=FREQ; TITLE “EXERCISE 5“; TABLES DEPT*SALES / NOPERCENT; RUN;,练习4输出,定义和调用 带参数的Macro程序块,Macro参数定义在 macro名称的后面。 %MACRO CHART(NAME,BARVAR); PROC CHART DATA=,定义和调用 带参数的Macro程序块,Macro调用其它Macro. %MACRO CHART(NAME,BARVAR); PROC CHART DATA= %PTCHART(PAYROLL,EMP),定义和调用 带参数的Macro程序块,PROC CHART DATA=PAYROLL; VBAR EMP; RUN; PROC PRINT DATA=PAYROLL; TITLE “PRINT OF DATASET PAYROLL“; RUN;, Macro程序块的if 、do使用,%IF 可以设置条件,代码只有在满足该条件时才能被送到编译器 举例: 只有在PRTCH=YES时Run PROC PRINT. %MACRO PTCHT(PRTCH,NAME,BARVAR); %IF %PTCHT(YES,PAYROLL,EMP), Macro程序块的if 、do使用,PROC PRINT DATA=PAYROLL ; PROC CHART DATA=PAYROLL; VBAR EMP; RUN;, Macro程序块的if 、do使用,%DO 可以使得多个语句被编译. 举例: 和前例相同,但多加了一个标题. %MACRO PTCHT(PRTCH,NAME,BARVAR); %IF %PTCHT(YES,PAYROLL,EMP), Macro程序块的if 、do使用,PROC PRINT DATA=PAYROLL; TITLE “PRINT OF DATASET PAYROLL“; RUN; PROC CHART DATA=PAYROLL; VBAR EMP; RUN;, Macro程序块的if 、do使用,举例:多次运行 PROC PRINT,运行次数由Macro参数决定 %MACRO PRTMAC(PRTNUM,NAME); %DO I= 1 %TO %PRTMAC(4,PAYROLL), Macro程序块的if 、do使用,PROC PRINT DATA=PAYROLL1; TITLE “PRINT OF DATASET PAYROLL1“; RUN; PROC PRINT DATA=PAYROLL2; TITLE “PRINT OF DATASET PAYROLL2“; RUN; PROC PRINT DATA=PAYROLL3; TITLE “PRINT OF DATASET
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/ZSA 159-2023卫星遥感监测规范 城市管理事件线索
- T/JSJTQX 71-2025毫米级域激光法沥青路面摊铺施工技术规程
- T/CNSC 001-2024荒漠地区(沙漠、沙地和戈壁)光伏工程生态影响监测与评价
- T/CCASC 0055-2025工业氯化石蜡
- T/CSEA 45-2025热浸镀锌钢板无铬钝化剂
- GB/T 34255-2026聚丁二酸-己二酸丁二酯(PBSA)树脂
- AI在口腔护理行业的智能刷牙指导
- 2026年《护理文书书写规范》培训考试题及答案
- PG岗位新人面试题及详细参考答案(零基础适配版)
- 2026年危废仓库污染监测与防控培训试卷及答案
- 2026小学生科普常识知识竞赛题及答案
- 抗美援朝纪念日致敬英雄课件
- 2026年交管12123科目一考试真题及详细答案解析
- 2026中国零碳产业园能源系统设计与投资回报分析报告
- 优必选机器人介绍主题课件
- CSCO神经内分泌肿瘤诊疗指南(2026版)
- 2026年保密教育线上培训考试试题(附完整答案)
- 2026年高考广东卷化学高考真题(含答案)
- 2026年永州职业技术学院单招职业技能考试题库及答案
- 科特迪瓦可可产业投资前景与产业链深度研究
- 解除专业分包合同协议
评论
0/150
提交评论