SAS - Makros
SAS verfügt über eine leistungsstarke Programmierfunktion namens MacrosDies ermöglicht es uns, sich wiederholende Codeabschnitte zu vermeiden und sie bei Bedarf immer wieder zu verwenden. Es hilft auch beim Erstellen dynamischer Variablen innerhalb des Codes, die unterschiedliche Werte für unterschiedliche Ausführungsinstanzen desselben Codes annehmen können. Makros können auch für Codeblöcke deklariert werden, die ähnlich wie Makrovariablen mehrmals wiederverwendet werden. Wir werden beide in den folgenden Beispielen sehen.
Makrovariablen
Dies sind die Variablen, die einen Wert enthalten, der von einem SAS-Programm immer wieder verwendet wird. Sie werden zu Beginn eines SAS-Programms deklariert und später im Hauptteil des Programms aufgerufen. Sie können global oder lokal sein.
Globale Makrovariable
Sie werden als globale Makrovariablen bezeichnet, da auf sie in jedem in der SAS-Umgebung verfügbaren SAS-Programm zugegriffen werden kann. Im Allgemeinen sind dies die vom System zugewiesenen Variablen, auf die mehrere Programme zugreifen. Ein allgemeines Beispiel ist das Systemdatum.
Beispiel
Unten finden Sie ein Beispiel für die SAS-Variable SYSDATE, die das Systemdatum darstellt. Stellen Sie sich ein Szenario vor, in dem das Systemdatum jeden Tag, an dem der Bericht erstellt wird, im Titel des SAS-Berichts gedruckt wird. Der Titel zeigt das aktuelle Datum und den aktuellen Tag an, ohne dass wir Werte dafür codieren. Wir verwenden den integrierten SAS-Datensatz CARS, der in der SASHELP-Bibliothek verfügbar ist.
proc print data = sashelp.cars;
where make = 'Audi' and type = 'Sports' ;
TITLE "Sales as of &SYSDAY &SYSDATE";
run;
Wenn der obige Code ausgeführt wird, erhalten wir die folgende Ausgabe.
Lokale Makrovariable
Auf diese Variablen können SAS-Programme zugreifen, in denen sie als Teil des Programms deklariert sind. Sie werden normalerweise verwendet, um denselben SAS-Anweisungen sl verschiedene Varaibel zu liefern, damit sie unterschiedliche Beobachtungen eines Datensatzes verarbeiten können.
Syntax
Die lokalen Variablen werden mit der folgenden Syntax dekaliert.
% LET (Macro Variable Name) = Value;
Hier kann das Feld Wert einen beliebigen numerischen, Text- oder Datumswert annehmen, wie vom Programm gefordert. Der Name der Makrovariablen ist eine gültige SAS-Variable.
Beispiel
Die Variablen werden von den SAS-Anweisungen mit dem verwendet & Zeichen am Anfang des Variablennamens angehängt. Das folgende Programm gibt uns alle Beobachtungen der Marke 'Audi' und des Typs 'Sport'. Für den Fall, dass wir das Ergebnis von wollendifferent makemüssen wir den Wert der Variablen ändern make_nameohne einen anderen Teil des Programms zu ändern. Bei Bring-Programmen kann diese Variable in beliebigen SAS-Anweisungen immer wieder referenziert werden.
%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;
Wenn der obige Code ausgeführt wird, erhalten wir die gleiche Ausgabe wie im vorherigen Programm. Aber lasst uns das änderntype name zu 'Wagon'und führen Sie das gleiche Programm aus. Wir werden das folgende Ergebnis erhalten.
Makro-Programme
Makro ist eine Gruppe von SAS-Anweisungen, auf die durch einen Namen verwiesen wird und die im Programm unter Verwendung dieses Namens überall verwendet werden können. Es beginnt mit einer% MACRO-Anweisung und endet mit einer% MEND-Anweisung.
Syntax
Die lokalen Variablen werden mit der folgenden Syntax deklariert.
# Creating a Macro program.
%MACRO <macro name>(Param1, Param2,….Paramn);
Macro Statements;
%MEND;
# Calling a Macro program.
%MacroName (Value1, Value2,…..Valuen);
Beispiel
Das folgende Programm dekaliert eine Gruppe von SAT-Staemnets unter einem Makro mit dem Namen 'show_result'; Dieses Makro wird von anderen SAS-Anweisungen aufgerufen.
%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);
Wenn der obige Code ausgeführt wird, erhalten wir die folgende Ausgabe.
Häufig verwendete Makros
SAS verfügt über viele MACRO-Anweisungen, die in der SAS-Programmiersprache integriert sind. Sie werden von anderen SAS-Programmen verwendet, ohne sie explizit zu deklarieren. Häufige Beispiele sind: Beenden eines Programms, wenn eine Bedingung erfüllt ist, oder Erfassen des Laufzeitwerts einer Variablen im Programmprotokoll. Nachfolgend einige Beispiele.
Makro% PUT
Diese Makroanweisung schreibt Text- oder Makrovariableninformationen in das SAS-Protokoll. Im folgenden Beispiel wird der Wert der Variablen 'today' in das Programmprotokoll geschrieben.
data _null_;
CALL SYMPUT ('today',
TRIM(PUT("&sysdate"d,worddate22.)));
run;
%put &today;
Wenn der obige Code ausgeführt wird, erhalten wir die folgende Ausgabe.
Makro% RETURN
Die Ausführung dieses Makros bewirkt eine normale Beendigung des aktuell ausgeführten Makros, wenn bestimmte Bedingungen als wahr ausgewertet werden. Im folgenden Beispiel, wenn der Wert der Variablen"val" wird 10, das Makro wird beendet, sonst wird es fortgesetzt.
%macro check_condition(val);
%if &val = 10 %then %return;
data p;
x = 34.2;
run;
%mend check_condition;
%check_condition(11) ;
Wenn der obige Code ausgeführt wird, erhalten wir die folgende Ausgabe.
Makro% ENDE
Diese Makrodefinition enthält a %DO %WHILESchleife, die nach Bedarf mit einer% END-Anweisung endet. Im folgenden Beispiel nimmt das Makro mit dem Namen test eine Benutzereingabe entgegen und führt die DO-Schleife mit diesem Eingabewert aus. Das Ende der DO-Schleife wird durch die Anweisung% end erreicht, während das Ende des Makros durch die Anweisung% mend erreicht wird.
%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)
Wenn der obige Code ausgeführt wird, erhalten wir die folgende Ausgabe.