SAS - Makrolar

SAS, güçlü bir programlama özelliğine sahiptir. MacrosBu, kodun tekrar eden bölümlerinden kaçınmamızı ve gerektiğinde bunları tekrar tekrar kullanmamızı sağlar. Aynı kodun farklı çalıştırma örnekleri için farklı değerler alabilen kod içinde dinamik değişkenler oluşturmaya da yardımcı olur. Makrolar, makro değişkenlere benzer şekilde birçok kez yeniden kullanılacak kod blokları için de bildirilebilir. Bunların ikisini de aşağıdaki örneklerde göreceğiz.

Makro değişkenler

Bunlar, bir SAS programı tarafından tekrar tekrar kullanılacak bir değeri tutan değişkenlerdir. Bir SAS programının başlangıcında ilan edilirler ve daha sonra programın gövdesinde çağrılırlar. Kapsam olarak Global veya Yerel olabilirler.

Global Makro değişkeni

Bunlar genel makro değişkenleri olarak adlandırılır çünkü bunlar SAS ortamında bulunan herhangi bir SAS programı tarafından erişilebilirler. Genelde, birden çok program tarafından erişilen sistem tarafından atanan değişkenlerdir. Genel bir örnek, sistem tarihidir.

Misal

Aşağıda, sistem tarihini temsil eden SYSDATE adlı SAS değişkeninin bir örneği bulunmaktadır. Raporun oluşturulduğu her gün SAS raporu başlığına sistem tarihini yazdırmak için bir senaryo düşünün. Başlık, onlar için herhangi bir değer kodlamadan geçerli tarihi ve günü gösterecektir. SASHELP kütüphanesinde bulunan CARS adlı yerleşik SAS veri setini kullanıyoruz.

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

Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı alıyoruz.

Yerel Makro değişkeni

Bu değişkenlere, programın bir parçası olarak bildirildikleri SAS programları tarafından erişilebilir. Tipik olarak, bir veri setinin farklı gözlemlerini işleyebilecekleri aynı SAS ifadelerine farklı değişkenler sağlamak için kullanılırlar.

Sözdizimi

Yerel değişkenler aşağıdaki sözdizimi ile etiketlenmiştir.

% LET (Macro Variable Name) = Value;

Burada Değer alanı, programın gerektirdiği şekilde herhangi bir sayısal, metin veya tarih değerini alabilir. Makro değişkeni adı, herhangi bir geçerli SAS değişkenidir.

Misal

Değişkenler, SAS ifadeleri tarafından kullanılır. & değişken adının başına eklenen karakter. Aşağıdaki program bize 'Audi' markasının ve 'Spor' türünün tüm gözlemlerini veriyor. Eğer sonucunu istiyorsakdifferent makedeğişkenin değerini değiştirmemiz gerekiyor make_nameprogramın başka herhangi bir bölümünü değiştirmeden. Programları getirme durumunda, bu değişken herhangi bir SAS ifadesinde tekrar tekrar belirtilebilir.

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

Yukarıdaki kod çalıştırıldığında önceki programla aynı çıktıyı elde ederiz. Ama değiştirelimtype name -e 'Wagon've aynı programı çalıştırın. Aşağıdaki sonucu alacağız.

Makro Programlar

Makro, bir adla atıfta bulunulan ve onu herhangi bir yerde, bu adı kullanarak programda kullanmak için kullanılan bir grup SAS ifadesi. Bir% MACRO ifadesiyle başlar ve% MEND ifadesiyle biter.

Sözdizimi

Yerel değişkenler aşağıdaki sözdizimi ile bildirilmiştir.

# Creating a Macro program.
%MACRO <macro name>(Param1, Param2,….Paramn);

Macro Statements;

%MEND;

# Calling a Macro program.
%MacroName (Value1, Value2,…..Valuen);

Misal

Aşağıdaki program, adlı bir makro altında bir grup SAT staemnetini çözer. 'show_result'; Bu Makro, diğer SAS ifadeleri tarafından çağrılmaktadır.

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

Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı alıyoruz.

Yaygın Olarak Kullanılan Makrolar

SAS, SAS programlama dilinde yerleşik birçok MACRO ifadesine sahiptir. Açıkça bildirilmeden diğer SAS programları tarafından kullanılırlar. Yaygın örnekler - bir koşul karşılandığında bir programı sonlandırmak veya program günlüğündeki bir değişkenin çalışma zamanı değerini yakalamaktır. Aşağıda bazı örnekler verilmiştir.

Makro% PUT

Bu makro ifadesi, metin veya makro değişken bilgilerini SAS günlüğüne yazar. Aşağıdaki örnekte 'bugün' değişkeninin değeri program günlüğüne yazılmıştır.

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

Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı alıyoruz.

Makro% RETURN

Bu makronun yürütülmesi, belirli koşulların doğru olduğu değerlendirildiğinde, o anda yürütülen makronun normal sonlandırılmasına neden olur. Aşağıdaki örnekte değişkenin değeri"val" 10 olur, makro devam ederse sonlandırır.

%macro check_condition(val);
   %if &val = 10 %then %return;

   data p;
      x = 34.2;
   run;  

%mend check_condition;  

%check_condition(11)  ;

Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı alıyoruz.

Makro% END

Bu makro tanımı, bir %DO %WHILEGerektiği gibi bir% END ifadesiyle biten döngü. Aşağıdaki örnekte test adlı makro bir kullanıcı girdisi alır ve bu girdi değerini kullanarak DO döngüsünü çalıştırır. DO döngüsünün sonu% end ifadesiyle, makronun sonu ise% mend ifadesiyle elde edilir.

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

Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı alıyoruz.