Esittelyt

SAS:ssa on tehokas ohjelmointiominaisuus nimeltä Makrot, jonka avulla voimme välttää toistuvia koodin osia ja käyttää niitä yhä uudelleen ja uudelleen tarvittaessa. Se auttaa myös luomaan koodin sisälle dynaamisia muuttujia, jotka voivat ottaa eri arvoja saman koodin eri ajokertoja varten. Makroja voidaan myös ilmoittaa koodilohkoille, joita käytetään uudelleen useita kertoja samalla tavalla kuin makromuuttujia. Näemme nämä molemmat alla olevissa esimerkeissä.

Makromuuttujat

Nämä ovat muuttujia, jotka pitävät sisällään arvon, jota SAS-ohjelma käyttää yhä uudelleen. Ne ilmoitetaan SAS-ohjelman alussa ja kutsutaan myöhemmin ohjelman rungossa. Ne voivat olla laajuudeltaan globaaleja tai paikallisia.

Globaali makromuuttuja

Makromuuttujia kutsutaan globaaleiksi makromuuttujiksi, koska niitä voi käyttää mikä tahansa SAS-ympäristössä oleva SAS-ohjelma. Yleensä ne ovat järjestelmän osoittamia muuttujia, joita useat ohjelmat käyttävät. Yleinen esimerkki on järjestelmäpäivämäärä.

Esimerkki

Alhaalla on esimerkki SAS-muuttujasta nimeltä SYSDATE, joka edustaa järjestelmäpäivämäärää. Tarkastellaan skenaariota, jossa järjestelmäpäivämäärä tulostetaan SAS-raportin otsikkoon joka päivä, kun raportti luodaan. Otsikko näyttää nykyisen päivämäärän ja päivän ilman, että koodaamme niille mitään arvoja. Käytämme sisäänrakennettua SAS-tietoaineistoa nimeltä CARS, joka on saatavilla SASHELP-kirjastossa.

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

Kun yllä oleva koodi ajetaan, saamme seuraavan tulosteen.

Lokaali makro-muuttuja

Nämä muuttujat ovat käytettävissä SAS-ohjelmissa, joissa ne ilmoitetaan osana ohjelmaa. Niitä käytetään tyypillisesti antamaan samoille SAS-lausekkeille eri varaibeliä sl, jotta ne voivat käsitellä aineiston eri havaintoja.

Syntaksi

Lokaalit muuttujat on dekaloitu alla olevalla syntaksilla.

% LET (Macro Variable Name) = Value;

Tässä Value-kenttään voidaan antaa mikä tahansa numeerinen, tekstimuotoinen tai päivämääräkohtainen arvo ohjelman vaatimalla tavalla. Makromuuttujan nimi on mikä tahansa kelvollinen SAS-muuttuja.

Esimerkki

Muuttujia käytetään SAS-lauseissa käyttämällä muuttujan nimen alkuun liitettyä &-merkkiä. Alla olevalla ohjelmalla saadaan kaikki merkin ’Audi’ ja tyypin ’Sports’ havainnot. Jos haluamme eri merkin tuloksen, meidän on muutettava muuttujan make_name arvoa muuttamatta mitään muuta ohjelman osaa. Tuota ohjelmaa käytettäessä tähän muuttujaan voidaan viitata uudelleen ja uudelleen missä tahansa SAS-lauseessa.

%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;

Kun yllä oleva koodi ajetaan, saamme saman tuloksen kuin edellisessä ohjelmassa. Vaihdetaan kuitenkin tyypin nimeksi ’Wagon’ ja ajetaan sama ohjelma. Saamme alla olevan tuloksen.

Makro-ohjelmat

Makro on SAS-lausekkeiden ryhmä, johon viitataan nimellä ja jota voidaan käyttää ohjelmassa missä tahansa käyttäen tätä nimeä. Se alkaa %MACRO-lausekkeella ja päättyy %MEND-lausekkeeseen.

Syntaksi

Lokaalit muuttujat ilmoitetaan alla olevalla syntaksilla.

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

Esimerkki

Alhaalla oleva ohjelma deklaraatioi joukon SAT-lausekkeita makron alle nimellä ’show_result’; Tätä makroa kutsutaan muilla SAS-lausekkeilla.

%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);

Kun yllä oleva koodi ajetaan, saamme seuraavan tulosteen.

Yleisesti käytetyt makrot

SAS:ssa on monia MACRO-lausekkeita, jotka on sisäänrakennettu SAS-ohjelmointikieleen. Muut SAS-ohjelmat käyttävät niitä ilman niiden nimenomaista ilmoittamista.Yleisiä esimerkkejä ovat – ohjelman lopettaminen, kun jokin ehto täyttyy tai muuttujan ajonaikaisen arvon tallentaminen ohjelmalokiin. Alla on muutamia esimerkkejä.

Makro %PUT

Tämä makrolauseke kirjoittaa tekstiä tai makromuuttujan tietoja SAS-lokiin. Alla olevassa esimerkissä muuttujan ’today’ arvo kirjoitetaan ohjelmalokiin.

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

Kun yllä oleva koodi ajetaan, saamme seuraavan tulosteen.

Makro %RETURN

Tämän makron suorittaminen saa aikaan senhetkisen suoritettavan makron normaalin lopettamisen, kun tietty ehto arvioidaan todeksi. Alla olevassa esimerkissä kun muuttujan ”val” arvoksi tulee 10, makro päättyy, muuten se jatkuu.

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

Kun yllä oleva koodi ajetaan, saadaan seuraava tuloste.

Makro %END

Tämä makromäärittely sisältää %DO %WHILE-silmukan, joka päättyy vaaditulla tavalla %END-lauseeseen. Alla olevassa esimerkissä makro nimeltä test ottaa käyttäjän syötteen ja suorittaa DO-silmukan käyttäen tätä syöttöarvoa.DO-silmukan loppu saavutetaan %end-lausekkeella, kun taas makron loppu saavutetaan %mend-lausekkeella.

%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)

Kun ylläoleva koodi ajetaan, saamme seuraavan ulostulon.

Mainokset

Vastaa

Sähköpostiosoitettasi ei julkaista.