Hirdetések

A SAS rendelkezik egy hatékony programozási funkcióval, a makrókkal, amely lehetővé teszi, hogy elkerüljük az ismétlődő kódrészeket, és szükség esetén újra és újra használjuk őket. Segít továbbá dinamikus változókat létrehozni a kódon belül, amelyek ugyanazon kód különböző futtatási példányaihoz különböző értékeket vehetnek fel. A makrók olyan kódblokkokhoz is deklarálhatók, amelyek a makróváltozókhoz hasonlóan többször is újrafelhasználásra kerülnek. Mindkettőt látni fogjuk az alábbi példákban.

Makróváltozók

Ezek azok a változók, amelyek egy SAS program által újra és újra felhasználható értéket tárolnak. Ezeket a SAS program elején deklaráljuk, és később a programtestben hívjuk meg őket. Hatályuk lehet globális vagy helyi.

Globális makrováltozó

Azért nevezzük őket globális makrováltozóknak, mert a SAS környezetben elérhető bármelyik SAS program hozzáférhet hozzájuk. Általában ezek a rendszerhez rendelt változók, amelyeket több program is elér. Általános példa erre a rendszerdátum.

Példa

Az alábbiakban egy példa a SYSDATE nevű SAS változóra, amely a rendszerdátumot jelöli. Tekintsünk egy olyan forgatókönyvet, amely a SAS-jelentés címében a rendszerdátumot nyomtatja ki minden nap, amikor a jelentés elkészül. A cím az aktuális dátumot és napot fogja mutatni anélkül, hogy bármilyen értéket kódolnánk hozzájuk. A SASHELP könyvtárban elérhető CARS nevű beépített SAS adathalmazt használjuk.

proc print data = sashelp.cars;where make = 'Audi' and type = 'Sports' ; TITLE "Sales as of &SYSDAY &SYSDATE";run;

A fenti kód futtatásakor a következő kimenetet kapjuk.

Lokális makróváltozó

Ezeket a változókat olyan SAS programok érhetik el, amelyekben a program részeként vannak deklarálva. Általában arra használjuk őket, hogy ugyanazon SAS utasításokhoz különböző változásokat adjunk, hogy azok egy adathalmaz különböző megfigyeléseit tudják feldolgozni.

Szintaktika

A helyi változókat az alábbi szintaxissal dekódoljuk.

% LET (Macro Variable Name) = Value;

Az Érték mezőbe itt bármilyen numerikus, szöveges vagy dátum értéket felvehetünk, ahogyan azt a program igényli. A makrováltozó neve bármely érvényes SAS változó.

Példa

A változókat a SAS utasítások a változó nevének elejére illesztett & karakterrel használják. Az alábbi program az ‘Audi’ márka és a ‘Sport’ típus összes megfigyelését megkapjuk. Ha más márka eredményét szeretnénk, akkor a make_name változó értékét kell megváltoztatnunk anélkül, hogy a program más részét megváltoztatnánk. Hozó programok esetén erre a változóra újra és újra hivatkozhatunk bármelyik SAS utasításban.

%LET make_name = 'Audi';%LET type_name = 'Sports';proc print data = sashelp.cars;where make = &make_name and type = &type_name ; TITLE "Sales as of &SYSDAY &SYSDATE";run;

A fenti kód futtatásakor ugyanazt a kimenetet kapjuk, mint az előző programban. De változtassuk meg a típusnevet ‘Wagon’-ra, és futtassuk le ugyanazt a programot. Az alábbi eredményt kapjuk.

Makro programok

A makro a SAS utasítások egy csoportja, amelyre egy névvel hivatkozunk, és a programban bárhol felhasználhatjuk, ezt a nevet használva. Egy %MACRO utasítással kezdődik és egy %MEND utasítással végződik.

Szintaktika

A helyi változókat az alábbi szintaxissal deklaráljuk.

# Creating a Macro program.%MACRO <macro name>(Param1, Param2,….Paramn);Macro Statements;%MEND;# Calling a Macro program.%MacroName (Value1, Value2,…..Valuen);

Példa

Az alábbi program a ‘show_result’ nevű makró alatt egy csoport SAT staemnetet deklarál; Ezt a makrót más SAS utasítások hívják.

%MACRO show_result(make_ , type_);proc print data = sashelp.cars;where make = "&make_" and type = "&type_" ;TITLE "Sales as of &SYSDAY &SYSDATE";run;%MEND;%show_result(BMW,SUV);

A fenti kód futtatásakor a következő kimenetet kapjuk.

Gyakran használt makrók

A SAS számos MACRO utasítással rendelkezik, amelyek be vannak építve a SAS programozási nyelvbe. Ezeket más SAS programok használják anélkül, hogy kifejezetten deklarálnák őket. gyakori példák – a program befejezése, ha valamilyen feltétel teljesül, vagy egy változó futásidejű értékének rögzítése a programnaplóban. Az alábbiakban néhány példát találunk.

Macro %PUT

Ez a makro utasítás szöveges vagy makrováltozói információt ír a SAS naplóba. Az alábbi példában a ‘today’ változó értéke kerül a programnaplóba.

data _null_;CALL SYMPUT ('today',TRIM(PUT("&sysdate"d,worddate22.)));run;%put &today;

A fenti kód futtatásakor a következő kimenetet kapjuk.

Macro %RETURN

Ez a makró végrehajtása az éppen futó makró normál befejezését okozza, ha bizonyos feltétel igaznak bizonyul. Az alábbi példában, amikor a “val” változó értéke 10 lesz, a makró befejeződik, különben folytatódik.

%macro check_condition(val); %if &val = 10 %then %return; data p; x = 34.2; run; %mend check_condition; %check_condition(11) ;

A fenti kód futtatásakor a következő kimenetet kapjuk.

Makró %END

Ez a makródefiníció egy %DO %WHILE hurkot tartalmaz, amely szükség szerint egy %END utasítással végződik. Az alábbi példában a teszt nevű makró egy felhasználói bemenetet fogad el, és ennek a bemeneti értéknek a felhasználásával futtatja a DO-hurkot.A DO-hurok végét a %end utasítással, míg a makró végét a %mend utasítással érjük el.

%macro test(finish); %let i = 1; %do %while (&i <&finish); %put the value of i is &i; %let i=%eval(&i+1); %end;%mend test;%test(5)

A fenti kód futtatásakor a következő kimenetet kapjuk.

Hirdetések

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.