What Does the FCMP Procedure Do.docx
- 文档编号:3744930
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:74
- 大小:46.22KB
What Does the FCMP Procedure Do.docx
《What Does the FCMP Procedure Do.docx》由会员分享,可在线阅读,更多相关《What Does the FCMP Procedure Do.docx(74页珍藏版)》请在冰点文库上搜索。
WhatDoestheFCMPProcedureDo
WhatDoestheFCMPProcedureDo?
TheSASFunctionCompiler(FCMP)procedureenablesyoutocreate,test,andstoreSASfunctionsandCALLroutinesbeforeyouusetheminotherSASprocedures.PROCFCMPprovidestheabilitytowritethesefunctions,CALLroutines,andsubroutinesinDATAstepsyntaxthatisstoredinadataset.TheprocedureacceptsslightvariationsofDATAstepstatements,andyoucanusemostfeaturesoftheSASprogramminglanguageinfunctionsandCALLroutinesthatareprocessedbyPROCFCMP.YoucancallPROCFCMPfunctionsandCALLroutinesfromtheDATAstepjustasyouwouldanyotherSASfunctionorCALLroutine.Thisfeatureenablesprogrammerstomoreeasilyread,write,andmaintaincomplexcodewithindependentandreusablesubroutines.
YoucanusethefunctionsandsubroutinesthatyoucreateinPROCFCMPwiththeDATAstepandthefollowingprocedures:
CALIS
COMPILE
GA
GENMOD
MODEL
NLIN
NLMIXED
NLP
PHREG
RiskDimensionsprocedures
SQL(functionswitharrayargumentsarenotsupported)
Syntax:
FCMPProcedure
TableofContents:
TheFCMPProcedure
PROCFCMPoption(s);
ARRAYarray-name[dimensions];
ATTRIBvariable(s)
FORMATvariable(s)
FUNCTIONfunction-name(argument-1,argument-2,...,argument-n)<$>
LABELvariable='label';
LENGTHvariable(s)<$>length
STRUCTstructure-namevariable;
SUBROUTINEsubroutine-name(argument-1,argument-2,...,argument-n);
OUTARGSout-argument-1,out-argument-2,...,out-argument-n;
Task
Statement
Create,test,andstoreSASfunctionsforusebyotherSASprocedures.
PROCFCMP
Associateanamewithalistofvariablesandconstants.
ARRAY
Specifyformat,label,andlengthinformationforavariable.
ATTRIB
Controltheformatthatisusedinprintingvariables.
FORMAT
Returnchangedvariablevalues.
FUNCTION
Specifyalabelforvariables.
LABEL
Controlthenumberofbytesthatareusedtostorevariables.
LENGTH
Declare(create)structuretypes.
STRUCT
Declare(create)independentcomputationalblocksofcode.
SUBROUTINE
(UseonlywiththeSUBROUTINEstatement.)Specifyargumentsfromtheargumentlistthatthesubroutineshouldupdate.
OUTARGS
PROCFCMPStatement
PROCFCMPoption(s);
Task
Option
Encodethesourcecodeinadataset.
ENCRYPT|HIDE
Specifyprintingamessageforeachstatementinaprogramasitisexecuted.
FLOW
Linkpreviouslycompiledlibraries.
LIBRARY|INLIB=
SpecifythatboththeLISTSOURCEandtheLISTPROGoptionsareineffect.
LIST
SpecifythattheLISTCODE,LISTPROG,andLISTSOURCEoptionsareineffect.
LISTALL
Specifytheprintingofcompiledprogramcode.
LISTCODE
Specifytheprintingofcompiledprograms.
LISTPROG
Specifytheprintingofsourcecodestatements.
LISTSOURCE
Specifythenameofanoutputdatasettowhichcompiledsubroutinesandfunctionsarewritten.
OUTLIB
Specifyprintingtheresultofeachstatementinaprogramasitisexecuted.
Specifyprintingtheresultsofeachoperationineachstatementinaprogramasitisexecuted.
TRACE
Options
ENCRYPT|HIDE
specifiestoencodethesourcecodeinadataset.
FLOW
specifiesprintingamessageforeachstatementinaprogramasitisexecuted.Thisoptionproducesextensiveoutput.
LIBRARY|INLIB=library.dataset
LIBRARY|INLIB=((library-1.datasetlibrary-2.dataset...library-n.dataset)
LIBRARY|INLIB=library.datasetM-library.datasetN
specifiesthatpreviouslycompiledlibrariesaretobelinkedintotheprogram.TheselibrariesarecreatedbyapreviousPROCFCMPsteporbyusingPROCPROTO(forexternalCroutines).
Tip:
LibrariesarecreatedbytheOUTLIB=optionandarestoredasmembersofaSASlibrarythathavethetypeCMPSUB.OnlysubroutinesandfunctionsarereadintotheprogramwhenyouusetheLIBRARY=option.
Tip:
IftheroutinesthatarebeingdeclareddonotcallPROCFCMProutinesinotherpackages,thenyoudonotneedtospecifytheINLIB=option.
Usethelibref.datasetformattospecifythetwo-levelnameofalibrary.ThelibrefanddatasetnamesmustbevalidSASnamesthatarenotlongerthaneightcharacters.YoucanspecifyalistoffileswiththeLIBRARY=option,andyoucanspecifyarangeofnamesbyusingnumericsuffixes.Whenyouspecifymorethanonefile,youmustenclosethelistinparentheses,exceptinthecaseofasinglerangeofnames.Thefollowingaresyntaxexamples:
procfcmplibrary=sasuser.exsubs;
procfcmplibrary=(sasuser.exsubswork.examples);
procfcmplibrary=lib1-lib10;
LIST
specifiesthatboththeLISTSOURCEandtheLISTPROGoptionsareineffect.
Tip:
Printingboththesourcecodeandthecompiledcodeandthencomparingthetwolistingsofassignmentstatementsisonewayofverifyingthattheassignmentswerecompiledcorrectly.
LISTALL
specifiesthattheLISTCODE,LISTPROG,andLISTSOURCEoptionsareineffect.
LISTCODE
specifiesthatthecompiledprogramcodebeprinted.LISTCODEliststhechainofoperationsthataregeneratedbythecompiler.
Tip:
BecauseLISTCODEoutputissomewhatdifficulttoread,usetheLISTPROGoptiontoobtainamorereadablelistingofthecompiledprogramcode.
LISTPROG
specifiesthatthecompiledprogrambeprinted.Thelistingforassignmentstatementsisgeneratedfromthechainofoperationsthataregeneratedbythecompiler.Thesourcestatementtextisprintedforotherstatements.
Tip:
TheexpressionsthatareprintedbytheLISTPROGoptiondonotnecessarilyrepresentthewaythattheexpressionisactuallycalculated,becauseintermediateresultsforcommonsubexpressionscanbere-used.However,theexpressionsareprintedinexpandedformbytheLISTPROGoption.Toseehowtheexpressionisactuallyevaluated,refertothelistingfromtheLISTCODEoption.
LISTSOURCE
specifiesthatsourcecodestatementsfortheprogrambeprinted.
OUTLIB=libname.dataset.package
specifiesthethree-levelnameofanoutputdatasettowhichthecompiledsubroutinesandfunctionsarewrittenwhenthePROCFCMPstepends.Thisargumentisrequired.Thefollowingaresyntaxexamples:
procfcmpoutlib=sasuser.fcmpsubs.pkt1;
procfcmpoutlib=sasuser.mysubs.math;
Requirement:
Usethisoptionwhenyouwanttosavesubroutinesandfunctionsinanoutputlibrary.
Tip:
OnlythosesubroutinesthataredeclaredinsidethecurrentPROCFCMPsteparesavedtotheoutputfile.ThosesubroutinesthatareloadedbyusingtheLIBRARY=optionarenotsavedtotheoutputfile.IfyoudonotspecifytheOUTLIB=option,thennosubroutinesthataredeclaredinthecurrentPROCFCMPsteparesaved.
specifiesprintingtheresultofeachstatementinaprogramasitisexecuted.Thisoptionproducesextensiveoutput.
TRACE
specifiesprintingtheresultsofeachoperationineachstatementinaprogramasitisexecuted.TheseresultsareinadditiontotheinformationthatisprintedbytheFLOWoption.TheTRACEoptionproducesextensiveoutput.
Tip:
SpecifyingTRACEisequivalenttospecifyingFLOW,PRINT,andPRINTALL
ARRAYStatement
Associatesanamewithalistofvariablesandconstants.
ARRAYarray-name[dimensions];
Arguments
array-name
specifiesthenameofthearray.
dimensions
isanumericrepresentationofthenumberofelementsinaone-dimensionalarrayorthenumberofelementsineachdimensionofamultidimensionalarray.
Options
/NOSYMBOLS
specifiesthatanarrayofnumericvaluesbecreatedwithouttheassociatedelementvariables.Inthiscase,youcanaccesselementsinthearraybyarraysubscripting.
Tip:
Youcansavememoryifyoudonotneedtoaccesstheindividualarrayelementvariablesbyname.
variable
specifiesthevariablesofthearray.
constant
specifiesanumberoracharacterstringthatindicatesafixedvalue.Enclosecharacterconstantsinquotationmarks.
(initial-values)
givesinitialvaluesforthecorrespondingelementsinthearray.Youcanspecifyinternalvaluesinsideparentheses.
Details
TheBasics
TheARRAYstatementinPROCFCMPissimilartotheARRAYstatementthatisusedintheDATAstep.TheARRAYstatementassociatesanamewithalistofvariablesandconstants.Youusethearraynamewithsubscriptstorefertoitemsinthearray.
TheARRAYstatementthatisusedinPROCFCMPdoesnotsupportallthefeaturesoftheARRAYstatementintheDATAstep.ThefollowingisalistofdifferencesthatapplytoPROCFCMP:
Allarrayreferencesmusthaveexplicitsubscriptexpressions.Youcannotuseimplicitindexingforvariables.
PROCFCMPusesparenthesesafteranametorepresentafunctioncall.Whenyoureferenceanarray,usesquarebrackets([])orcurlybraces({}).
Youcanuseonlysimplearraydimensions.
TheARRAYstatementinPROCFCMPdoesnotsupportlower-boundspecifications.
Youcanuseamaximumofsixdimensionsforanarray.
YoucanusebothvariablesandconstantsasarrayelementsintheARRAYstatementthatisusedinPROCFCMP.Althoughdimensionspecificationandthelistofelementsareoptional,youmustprovideoneofthesevalues.Ifyoudonotspecifyalistofelementsforthearray,orifyoulistfewerelementsthanthesizeofthearray,PROCFCMPcreatesarrayvariablesbyaddinganumericsuffixtotheelementsofthearraytocompletetheelementlist.
PassingArrayReferencestoPROCFCMPRoutines
IfyouwanttopassanarrayreferencetoPROCFCMProutinesbyusing
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- What Does the FCMP Procedure Do