MacroOctober07.docx
- 文档编号:11203835
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:41
- 大小:40.31KB
MacroOctober07.docx
《MacroOctober07.docx》由会员分享,可在线阅读,更多相关《MacroOctober07.docx(41页珍藏版)》请在冰点文库上搜索。
MacroOctober07
TopicSASMacroLanguage
1.OverviewofSASMacroLanguage
2.MacroVariables
3.IntroductiontoAutomaticMacroVariables
4.MacroProgram
5.InterfacestotheMacroFacility
6.MacroStatements
7.MacroFunctions
8.SystemOptions
9.StoringMacroPrograms
10.AStepwiseMethodsforWritingMacroPrograms
1.Overview
ThemacrofacilityisatoolforextendingandcustomizingtheSASSystemandforreducingtheamountoftextyoumustentertodocommontasks.ItallowsyoutoassignanametocharacterstringsorgroupsofSASprogrammingstatements.
TheSASmacrofacilityisacomponentofbaseSAS.Thebase SAS productisintegraltotheSASsystem. ThemacrofacilityhasitownlanguagedistinctfromtheSASlanguage,butthelanguageandconventionsofthemacrofacilityaresimilartothestyleandsyntaxoftheSASlanguage.TheSASmacrofacilityhastwocomponents:
A.ThemacroprocessoristheportionoftheSASsystemthatdoesthework.
B.Themacrolanguageisthesyntaxthatyouusetocommunicatewiththemacroprocessor.ThecomponentsoftheMacroLanguageareMacroVariables,MacroStatements,MacroFunctions,andMacroexpressions&ConstantText.
1.1IntroductionofMacroProcessing
ThistopicdescribesatypicalpatternthattheSASSystemfollowstoprocessaprogram.TheseconceptsarehelpfulinunderstandinghowthemacroprocessorworkswithotherpartsoftheSASSystem.However,theyarenotrequiredformostmacroprogramming.Theyareprovidedsothatyoucanunderstandwhatisgoingonbehindthescenes.
Note:
Theconceptsherepresentalogicalrepresentation,notadetailedphysicalrepresentation,ofhowSASsoftwareworks.
Whenyousubmitaprogram,itgoestoanareaofmemorycalledtheinputstack.Thisistrueforallprogramandcommandsources:
theDisplayManager,theSCLSUBMITblock,theSCLCOMPILEcommand,orfrombatchornoninteractivesessions.TheinputstackshowncontainsasimpleSASprogramthatdisplayssalesdata.Onceaprogramreachestheinputstack,SAStransformsthestreamofcharactersintoindividualtokens.ThesetokensaretransferredtodifferentpartsoftheSASSystemforprocessing,suchastheDATAstepcompiler,themacroprocessor,andtheSASprocedures.KnowinghowSASrecognizestokensandhowtheyaretransferredtodifferentpartsoftheSASSystemwillhelpyouunderstandhowthevariouspartsoftheSASSystemandthemacroprocessorworktogetherandhowtocontrolthetimingofmacroexecutioninyourprograms.Thefollowingsectionsshowyouhowasimpleprogramistokenizedandprocessed.
Tokenization
Betweentheinputstackandthecompiler,SASprogramsaretokenizedintosmallerpieces.TheprocessthatSASusestoextractwordsandsymbolsfromtheinputstackiscalledtokenization.AcomponentofSASknownasthewordscannerdividesprogramtextintofundamentalunitscalledtokens.Thewordscannerstartsatthefirstcharacterintheinputstackandexamineseachcharacterinturn.Indoingso,thewordscannerassemblesthecharactersintotokens.Inthisexample,whenthewordscannerpullsthefirsttokenfromtheinputstack,itrecognizesthetokenasthebeginningofaDATAstep.ThewordscannertriggerstheDATAstepcompiler,whichbeginstorequestmoretokens.
∙Tokensarepassedondemandtothecompiler.
∙Thecompilerrequeststokensuntilitreceivesasemicolon.
∙Thecompilerperformsasyntaxcheckonthestatement.
Thewordscannerrecognizesfourtypesoftokens:
∙Aliteraltokenisastringofcharactersthataretreatedasaunit.Thestringisenclosedineithersingleordoublequotationmarks.
Examples:
"Anytext" 'Anytext'
∙AnumbertokenisastringofnumeralsthatcanincludeaperiodorE-notation(realnumbers).Dateconstants,timeconstants,datetimeconstants,andhexadecimalconstantsarealsonumbertokens.
Examples:
23 109 '01jan2002'd 5e8 42.7
∙Anametokenisastringofcharactersthatbeginswithaletterorunderscoreandthatcontinueswithunderscores,letters,ordigits.Aperiodcansometimesbepartofaname.
Examples:
infile _n_ item3 univariate dollar10.2
∙Aspecialtokenisanycharacterorgroupofcharactersthathasareservedmeaningtothecompiler.
Examples:
* / + - ** ; $ ( ) . & %
Atokenendswhenthewordscannerdetects
∙thebeginningofanothertoken
∙ablankafteratoken.
Themaximumlengthofanytokenis32767characters.
Examples
∙varx1-x10 z ;
Thisexamplecontainssixtokens:
varx1-x10z;
∙title'ReportforMay';
Thisexamplecontainsthreetokens:
title'ReportforMay';
1.2WhataretheadvantagesoftheSASmacrofacility?
Itprovidestoolsthat
∙AvoidrepetitiousSAScode
∙PassinformationbetweenSASsteps
∙Dynamicallycreatecodeatexecutiontime
∙ConditionallyexecuteDATAorPROCsteps
∙Creategeneralizableandflexiblecode
SASmacrofacilitycanaccomplishrepetitivetasksquicklyandefficiently.Amacroprogramcanbereusedmanytimes.Parameterspassedtothemacroprogramcustomizetheresultswithouthavingtochangethecodewithinthemacroprogram.SASmacroalsoprovidesamoremodularstructuretoyourprograms.
1.2.1Therearetwodelimiterstotriggermacroprocessoractivity
&namereferstoamacrovariable,iscalledamacrovariablereference.Ittriggersanattemptatsymbolicsubstitution,whichistheresolutionofamacrovariable.
%signcantriggermacroinvocation,theattempttoinvokethedefinedmacroandtoexecutethemacro,sometimestotriggermacrofunction(%evl,%upcase),programmingstatements(%let%if%then%do%end).
1.3MacroStatements
-beginwitha%andamacrokeywordandendwithsemicolon(;).
-assignvalues,substitutevalues,andchangemacrovariables.
-canbranchorgenerateSASstatementsconditionally.
-MacrostatementsaregiventothemacroprocessorBEFOREthecompiler.
1.3.1SomearevalidanywhereinSAScode.Suchas%let,%put,%display,and%include.
1.3.2Othersarevalidonlyinsideamacrodefinition.Suchas%if%then;%else,%do%end;%do%while%end;%local.
2.MacroVariables
ThetwomailtoolsoftheSASmacrofacilityareSASmacrovariablesandSASmacroprograms
Macrovariables,whicharealsoknownassymbolicvariables,arenotdatasetvariables,andusedtoreplacetextstringsinSAScode.
2.1BasicRulestoNameMacroVariables
∙Anamecanbefromonetoeightcharactersinlength.
∙Anamemustbeginwithaletterorunderscore(_).
∙Onlyletters,numbers,andunderscorescanfollowthefirstcharacter.
∙Thecontentofmacrovariablecanbeupto32K.
∙NomacrovariablecanhavethesamenameasaSAS-suppliedmacroormacrofunction.
Therearemanyfeaturesofmacrovariables.
1.Amacrovariablecanbereferencedanywherein aSASprogramotherthanindatalines.
2.Amacrovariablecanbeusedinopencodeaswellasinmacroprograms.
3.AmacrovariablecanbecreatedbytheSASsystemandbyyourprograms.
Therearetwotypesofmacrovariables:
∙automaticmacro:
sasday,sasdate,sastime
∙user-defined
4.Amacrovariablecanbestoredineithertheglobalsymboltableorinalocalsymboltable.
5.Macrovariablevaluesaretextvalues.Allvaluesassignedtomacrovariableareconsideredtextvalues.Thisincludesnumbers.Thecaseofthecharactervalueassignedtoamacrovariableispreserved.Thatis,avalueinlowercaseremainslowercase,uppercaseremainsuppercase,andmixedcaseremainsmixedcase.
6.ThenameassignedtoamacrovariablemustbeavalidSASname.
7.Theyarenotdatasetvariableandtheyhaveadifferentpurposefromdataset.
/*example:
user-definedmacrovariable*/;
dataschool_one;
inputstu_idscore1score2agesex$@@;
datalines;
123456789929018F231568765908917F
423055789868519M582774165909317M
;
%letss=school_one;
%lets_sum=score1;
%putdatasetis&ss;
%putThevalueformacrovariables_sumis&s_sum;
procprintdata=&ss;
var&s_sum;
title"Dataforthe&SS";
run;
/*example:
user-definedmacrovariablecontent*/;
%letage4=%str(ifage<20thengroup="<20";
elseifage<35thengroup="20-34";
elseifage<45thengroup="35-44";
elsegroup="45+";);
%letage2=%str(ifage<35thengroup="<35";
elsegroup="35+";);
datatest;
inputage@@;
&age4;
datalines;
19501034441530
;
run;
2.2DefiningandUsingMacroVariables
Thesimplestwaytodefineamacrovariableistousethe%LETstatementtoassignthemacrovariableaname,andavalue.Thenameofmacrovariablesisalmostalwaysprecededbyanampersand(&)inSAScode.Hereisasimpleexample:
%letcity=NewOrleans;
title“Datafor&city“title“DataforNewOrleans“;
Note:
themacroprocessorresolvesmacrovariablereferenceswithindoublequotationmarksbutNOTwithinsinglequotationmarks.
A%LETstatementinopencode(outsideamacrodefinition)createsamacrovariablethatisavailableforuseanywhereinyourSAScodeduringtheSASsessioninwhichthevariablewascreated.
%LETStatement
VariableName
VariableValue
Length
%letname=EdNorton;
name
EdNorton
9
%letname2='EdNorton';
name2
'EdNorton'
13
%lettitle="Joan'sReport";
title
"Joan'sReport"
15
%letstart=;
start
0
%lettotal=0;
total
0
1
%letsum=4+3;
Sum
4+3
3
%lettotal=&total+∑
total
0+4+3
5
%letx=varlist;
X
varlist
7
%let&x=nameageheight;
varlist
nameageheight
15
MacrovariablesarenotsubjecttothesamelengthlimitsasSASdatasetvariables.
Thecommonsystemoptionsfordisplayingmacrovariablesareasfollows:
_all_listsallmacrovariablesinallreferenceenvironmentsincludingbothuserandsystemdefinedmacrovariablestothelog.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MacroOctober07