Anunțuri

SAS dispune de o caracteristică puternică de programare numită Macros care ne permite să evităm secțiunile repetitive de cod și să le folosim din nou și din nou atunci când este nevoie. Aceasta ajută, de asemenea, la crearea de variabile dinamice în cadrul codului care pot lua valori diferite pentru diferite instanțe de execuție ale aceluiași cod. De asemenea, macrocomenzile pot fi declarate pentru blocuri de cod care vor fi reutilizate de mai multe ori în mod similar cu variabilele macro. Le vom vedea pe amândouă în exemplele de mai jos.

Variabile macro

Acestea sunt variabilele care dețin o valoare care va fi folosită din nou și din nou de un program SAS. Ele sunt declarate la începutul unui program SAS și sunt apelate ulterior în corpul programului. Ele pot avea un domeniu de aplicare global sau local.

Variabile macro globale

Sunt numite variabile macro globale deoarece pot fi accesate de orice program SAS disponibil în mediul SAS. În general, acestea sunt variabilele atribuite de sistem care sunt accesate de mai multe programe. Un exemplu general este data sistemului.

Exemplu

Mai jos este un exemplu de variabilă SAS numită SYSDATE care reprezintă data sistemului. Luați în considerare un scenariu pentru a imprima data sistemului în titlul raportului SAS în fiecare zi în care este generat raportul. Titlul va afișa data și ziua curentă fără să codificăm nicio valoare pentru acestea. Utilizăm setul de date SAS încorporat numit CARS disponibil în biblioteca SASHELP.

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

Când codul de mai sus este rulat, obținem următoarea ieșire.

Variabilă macro locală

Aceste variabile pot fi accesate de programele SAS în care sunt declarate ca parte a programului. Ele sunt utilizate de obicei pentru a furniza varaibele diferite acelorași declarații SAS sl că acestea pot procesa observații diferite dintr-un set de date.

Sintaxa

Variabilele locale sunt decalcate cu sintaxa de mai jos.

% LET (Macro Variable Name) = Value;

Aici câmpul Value poate lua orice valoare numerică, text sau dată, după cum cere programul. Numele variabilei macro este orice variabilă SAS validă.

Exemplu

Variabilele sunt utilizate de instrucțiunile SAS folosind caracterul & atașat la începutul numelui variabilei. Programul de mai jos ne obține toate observațiile de la marca „Audi” și tipul „Sport”. În cazul în care dorim rezultatul unei alte mărci, trebuie să schimbăm valoarea variabilei nume_marcă fără a modifica nicio altă parte a programului. În cazul programelor bring, această variabilă poate fi menționată din nou și din nou în orice instrucțiune 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;

Când codul de mai sus este rulat, obținem același rezultat ca și în programul anterior. Dar să schimbăm numele tipului în „Wagon” și să executăm același program. Vom obține rezultatul de mai jos.

Programe macro

Macro este un grup de instrucțiuni SAS la care se face referire printr-un nume și pentru a-l utiliza în program oriunde, folosind acel nume. Începe cu o instrucțiune %MACRO și se termină cu instrucțiunea %MEND.

Sintaxa

Variabilele locale sunt declarate cu sintaxa de mai jos.

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

Exemplu

Programul de mai jos decalează un grup de staemne SAT sub o macro numită ‘show_result’; Această macro este apelată de alte instrucțiuni 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);

Când codul de mai sus este rulat, obținem următoarea ieșire.

Macros utilizate în mod obișnuit

SAS are multe instrucțiuni MACRO care sunt încorporate în limbajul de programare SAS. Acestea sunt utilizate de alte programe SAS fără a le declara în mod explicit. exemple comune sunt – terminarea unui program atunci când este îndeplinită o anumită condiție sau capturarea valorii de execuție a unei variabile în jurnalul programului. Mai jos sunt prezentate câteva exemple.

Macro %PUT

Acest instrucțiune macro scrie informații despre text sau despre variabila macro în jurnalul SAS. În exemplul de mai jos, valoarea variabilei „today” este scrisă în jurnalul programului.

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

Când codul de mai sus este executat, obținem următoarea ieșire.

Macro %RETURN

Executarea acestei macroprograme determină terminarea normală a macroului în curs de execuție atunci când o anumită condiție este evaluată ca fiind adevărată. În exemplul de mai jos, atunci când valoarea variabilei „val” devine 10, macroul se termină, altfel continuă.

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

Când codul de mai sus este executat, obținem următoarea ieșire.

Macro %END

Această definiție de macro conține o buclă %DO %WHILE care se termină, după cum este necesar, cu o instrucțiune %END. În exemplul de mai jos, macroul numit test preia o intrare de la utilizator și execută bucla DO folosind această valoare de intrare. sfârșitul buclei DO se realizează prin intermediul instrucțiunii %end, în timp ce sfârșitul macroului se realizează prin intermediul instrucțiunii %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)

Când codul de mai sus este executat, obținem următoarea ieșire.

Anunțuri

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.