Reklama

SAS má výkonnou programovací funkci zvanou Makra, která nám umožňuje vyhnout se opakujícím se částem kódu a v případě potřeby je opakovaně používat. Pomáhá také vytvářet v kódu dynamické proměnné, které mohou nabývat různých hodnot pro různé instance spuštění téhož kódu. Makra lze také deklarovat pro bloky kódu, které budou opakovaně použity podobně jako makroproměnné. Obojí uvidíme v následujících příkladech.

Makroproměnné

Jsou to proměnné, které uchovávají hodnotu, jež má být programem SAS opakovaně použita. Jsou deklarovány na začátku programu SAS a později jsou volány v těle programu. Mohou mít globální nebo lokální rozsah.

Globální makroproměnná

Nazývají se globální makroproměnné, protože k nim může přistupovat kterýkoli program SAS dostupný v prostředí SAS. Obecně se jedná o systémově přiřazené proměnné, ke kterým přistupuje více programů. Obecným příkladem je systémové datum.

Příklad

Níže je uveden příklad proměnné SAS s názvem SYSDATE, která představuje systémové datum. Uvažujme scénář, kdy se má systémové datum vypisovat v názvu sestavy SAS každý den, kdy je sestava generována. V nadpisu se zobrazí aktuální datum a den, aniž bychom pro ně kódovali nějaké hodnoty. Použijeme vestavěnou datovou sadu SAS s názvem CARS, která je k dispozici v knihovně SASHELP.

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

Při spuštění výše uvedeného kódu dostaneme následující výstup.

Místní makroproměnná

Tyto proměnné jsou přístupné v programech SAS, ve kterých jsou deklarovány jako součást programu. Obvykle se používají k dodávání různých varaibel stejným příkazům SAS sl, aby mohly zpracovávat různá pozorování datového souboru.

Syntaxe

Lokální proměnné jsou deklarovány s níže uvedenou syntaxí.

% LET (Macro Variable Name) = Value;

Zde pole Value může nabývat libovolné číselné, textové nebo datové hodnoty podle požadavků programu. Název makroproměnné je libovolná platná proměnná SAS.

Příklad

Proměnné se používají v příkazech SAS pomocí znaku & připojeného na začátek názvu proměnné. Níže uvedený program nám získá všechna pozorování značky „Audi“ a typu „Sport“. V případě, že chceme výsledek jiné značky, musíme změnit hodnotu proměnné make_name, aniž bychom měnili jakoukoli jinou část programu. V případě přinášení programů se na tuto proměnnou můžeme opakovaně odkazovat v libovolných příkazech SAS.

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

Při spuštění výše uvedeného kódu dostaneme stejný výstup jako u předchozího programu. Změňme však název typu na „Vagon“ a spusťme stejný program. Dostaneme níže uvedený výsledek.

Makroprogramy

Makro je skupina příkazů SAS, která je označena jménem a pro použití v programu kdekoli použijeme toto jméno. Začíná příkazem %MACRO a končí příkazem %MEND.

Syntaxe

Lokální proměnné jsou deklarovány níže uvedenou syntaxí.

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

Příklad

Níže uvedený program deklaroval skupinu SAT staemnetů pod makrem s názvem ‚show_result‘; Toto makro je voláno jinými příkazy SAS.

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

Při spuštění výše uvedeného kódu dostaneme následující výstup.

Běžně používaná makra

SAS má mnoho příkazů MACRO, které jsou zabudovány v programovacím jazyce SAS. Ostatní programy SAS je používají, aniž by je musely explicitně deklarovat. běžnými příklady jsou – ukončení programu při splnění nějaké podmínky nebo zachycení hodnoty proměnné za běhu programu v protokolu. Níže uvádíme několik příkladů:

Makro %PUT

Tento příkaz makra zapisuje do protokolu SAS text nebo informace o makroproměnné. V níže uvedeném příkladu je do logu programu zapsána hodnota proměnné ‚today‘.

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

Při spuštění výše uvedeného kódu získáme následující výstup.

Makro %RETURN

Provedení tohoto makra způsobí normální ukončení právě prováděného makra, když se určitá podmínka vyhodnotí jako pravdivá. V níže uvedeném příkladupokud hodnota proměnné „val“ nabývá hodnoty 10, makro se ukončí, jinak pokračuje.

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

Při spuštění výše uvedeného kódu dostaneme následující výstup.

Makro %END

Tato definice makra obsahuje cyklus %DO %WHILE, který je podle potřeby ukončen příkazem %END. V níže uvedeném příkladu makro s názvem test přijme uživatelský vstup a spustí smyčku DO s použitím této vstupní hodnoty. ukončení smyčky DO je dosaženo příkazem %end, zatímco ukončení makra je dosaženo příkazem %mend.

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

Při spuštění výše uvedeného kódu získáme následující výstup.

Reklama

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.