您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > [SAS课件] 斯坦福大学sas教学课件MACRO_简介
SASMACRO简介西南财经大学统计学院目标•使用系统(或自动的)macro变量•创建和使用用户定义的macro变量•定义和调用macro程序块•定义和调用带参数的macro程序块•Macro程序块的if、do使用SASMacro语言用于字符串操作的第二SAS编程语言使用系统macro变量问题:PROCPRINTDATA=DEPTSALE;TITLE“到####的部门销售额”;RUN;•你想让今天的年月日和星期几显示在Title里,用SAS怎么做?答案:•使用系统macro变量.PROCPRINTDATA=DEPTSALE;TITLE“到&SYSDATE的部门销售额”;RUN;注意:•Macro变量不能在单引号内’…’被解释.到26MAY07的部门销售额OBSDEPTYEARSALARIESSALES1187100010002188100020003287500300042886002000使用系统macro变量SAS系统自带的Macro变量Apartiallistofautomaticmacrovariablesandtheirusage:SYSBUFFRtextenteredinresponseto%INPUTSYSCMDlastnon-SAScommandenteredSYSDATEcurrentdateinDATE6.orDATE7.formatSYSDAYcurrentdayoftheweekSYSDEVICcurrentgraphicsdeviceSYSDSNlastSASdatasetbuilt(i.e.,WORKSOFTSALE)SYSENVSASenvironment(FOREorBACK)SYSERRreturncodesetbySASproceduresSYSFILRCwhetherlastFILENAMEexecutedcorrectlySYSINDEXnumberofmacrosstartedinjobSYSINFOsysteminformationgivenbysomePROCSSYSJOBIDnameofexecutingjoboruserSYSLASTlastSASdatasetbuilt(i.e.,WORK.SOFTSALE)SYSLIBRCreturncodefromlastLIBNAMEstatementSYSLCKRCwhethermostrecentlockwassuccessfulSAS自带的Macro变量SYSMENVmacroexecutionenvironmentSYSMSGmessagedisplayedwith%DISPLAYSYSPARMvaluepassedfromSYSPARMinJCLSYSPRODindicateswhetheraSASproductislicensedSYSPBUFFallmacroparameterspassedSYSRCreturncodefrommacroprocessorSYSSCPoperatingsystemwhereSASisrunningSYSTIMEstartingtimeofjobSYSVERSASversionExample:FOOTNOTETHISREPORTWASRUNON&SYSDAY,&SYSDATE;Resolvesto:FOOTNOTETHISREPORTWASRUNONFRIDAY,26MAR99;显示Macro变量%PUT在编译程序时把macro变量显示在log窗口里.语法:%PUTtextmacrovariables;%PUT_all_;举例:%PUT*****&SYSDATE*****;PartialSASLog:*****26MAR07*****显示所有的Macro变量%PUT可以显示所有的Macro变量,方法为:%PUT_ALL_;PartialSASLog:GLOBALMBILLYR99GLOBALSSCDEVCAUTOMATICAFDSID0AUTOMATICAFDSNAMEAUTOMATICAFLIBAUTOMATICAFSTR1AUTOMATICAFSTR2AUTOMATICFSPBDVAUTOMATICSYSBUFFRAUTOMATICSYSCMDAUTOMATICSYSDAYTuesday练习练习1:•使用你目前的计算机系统决定以下系统Macro变量的值.&SYSDAYCurrentdayoftheweek&SYSTIMECurrenttime&SYSSCPOperatingsystembeingused&SYSVERCurrentSASversionnumber&SYSDATECurrentdate,inDATE7.Format练习2:•使用系统Macro变量运行PROCCONTENTS和PROCPRINT以显示最后建立的SAS数据集合.把数据集合的名称放在标题里。Exercise1解答%PUT****SYSDAY=&SYSDAY;%PUT****SYSTIME=&SYSTIME;%PUT****SYSSCP=&SYSSCP;%PUT****SYSVER=&SYSVER;%PUT****SYSDATE=&SYSDATE;Exercise1输出%PUT****SYSDAY=&SYSDAY;****SYSDAY=Monday%PUT****SYSTIME=&SYSTIME;****SYSTIME=08:33%PUT****SYSSCP=&SYSSCP;****SYSSCP=WIN%PUT****SYSVER=&SYSVER;****SYSVER=8.1%PUT****SYSDATE=&SYSDATE;****SYSDATE=26MAY07Exercise2解答proccontentsdata=&syslast;titlecontentsof&syslast;run;TheGeneratedCode:proccontentsdata=WORK.deptsale;titlecontentsofWORK.deptsale;run;Exercise2部分输出创建和使用用户定义的macro变量问题:假如在一个程序中需要多次提到一个SAS数据集合,DATAPAYROLL;INPUTEMP$RATE;DATALINES;TOM10JIM10;PROCPRINTDATA=PAYROLL;TITLEPRINTOFDATASETPAYROLL;RUN;如何只在一个地方改动名字,并且让数据集合名称出现在标题中?解答:•使用Macro变量.创建和使用用户定义的macro变量•用%LET定义变量.•然后用&variable指示变量(C的指针?).•Macro把&variable变换成值.语法:%LETvariable=value;%LETNAME=PAYROLL;DATA&NAME;INPUTEMP$RATE;DATALINES;TOM10JIM10;PROCPRINTDATA=&NAME;TITLEPRINTOFDATASET&NAME;RUN;创建和使用用户定义的macro变量DATAPAYROLL;INPUTEMP$RATE;DATALINES;TOM10JIM10;PROCPRINTDATA=PAYROLL;TITLEPRINTOFDATASETPAYROLL;RUN;Notes:•Macrovariablesarenotresolvedwithinsinglequotes.创建和使用用户定义的macro变量用%LET另赋一个值.%LETNAME=NEWPAY;DATA&NAME;INPUTEMP$RATE;DATALINES;TOM10JIM10;PROCPRINTDATA=&NAME;TITLEPRINTOFDATASET&NAME;RUN;创建和使用用户定义的macro变量DATANEWPAY;INPUTEMP$RATE;DATALINES;TOM10JIM10;PROCPRINTDATA=NEWPAY;TITLEPRINTOFDATASETNEWPAY;RUN;创建和使用用户定义的macro变量赋几个SAS语句:%STR可允许“;”等出现在命令之间.%LETNAME=NEWPAY;%LETCHART=%STR(PROCCHART;VBAREMP;RUN;);DATA&NAME;INPUTEMP$RATE;DATALINES;TOM10JIM10;&CHARTPROCPRINTDATA=&NAME;TITLEPRINTOFDATASET&NAME;RUN;创建和使用用户定义的macro变量DATANEWPAY;INPUTEMP$RATE;DATALINES;TOM10JIM10;PROCCHART;VBAREMP;RUN;PROCPRINTDATA=NEWPAY;TITLEPRINTOFDATASETNEWPAY;RUN;创建和使用用户定义的macro变量Macro变量可以包含其它的Macro变量%LETNAME=NEWPAY;%LETCHART=%STR(PROCCHARTDATA=&NAME;VBAREMP;RUN;);DATA&NAME;INPUTEMP$RATE;DATALINES;TOM10JIM10;&CHARTPROCPRINTDATA=&NAME;TITLEPRINTOFDATASET&NAME;RUN;创建和使用用户定义的macro变量DATANEWPAY;INPUTEMP$RATE;DATALINES;TOM10JIM10;PROCCHARTDATA=NEWPAY;VBAREMP;RUN;PROCPRINTDATA=NEWPAY;TITLEPRINTOFDATASETNEWPAY;RUN;练习做法:•把你的答案写在纸上.•用%PUT语句检验你的答案.练习3:•在执行完以下的%LET语句之后%LETA=ANDY;%LETB=1999;%LETC=CANES;%LETD=DECEMBER31,;%LETE=TREMENDOUS;练习3(continued)这些%PUT语句的输出结果是什么?%PUT&C;%PUTFISCALYEAR&B;%PUTYEARENDED&D&B;%PUT&BC&A&CWERESOLDIN&B;%PUT&BWASA&ESALESYEAR!;练习3解答%LETA=ANDY;%LETB=1999;%LETC=CANES;%LETD=DECEMBER31,;%LETE=TREMENDOUS;练习3解答%PUT&C;CANES%PUTFISCALYEAR&B;FISCALYEAR1999%PUTYEARENDED&D&B;YEARENDEDDECEMBER31,1999%PUT&BC&A&CWERESOLDIN&B;1999CANDYCANESWERESOLDIN1999%PUT&BWASA&ESALESYEAR!;1999WASATREMENDOUSSALESYEAR!定义和调用macro程序块%MACRO和%MEND定义macro.使用%macroname调用Macro.例子:定义一个macro运行PROCCHART,然后调用%MACROCHART;PROCCHARTDATA=&NAME;VBAREMP;RUN;%MEND;定义和调用macro程序块%LETNAME=NEWPAY;DATA&NAME;INPUTEMP$RATE;DATALINES;TOM10JIM10;RUN;%CHARTPROCPRINTDATA=&NAME;TITLEPRINTOFDATASET&NAME;RUN;定义和调用macro程序块DATANEWPAY;INPUTEMP$RATE;DATALINES;TOM10JIM10;RUN;PROCCHARTDATA=NEWPAY;VBAREMP;RUN;PROCPRINTDATA=NEWPAY;TITLEPRINTOFDATASETNEWPAY;RUN;练习4
本文标题:[SAS课件] 斯坦福大学sas教学课件MACRO_简介
链接地址:https://www.777doc.com/doc-3544115 .html