Werbung

SAS verfügt über eine leistungsstarke Programmierfunktion namens Makros, die es uns ermöglicht, sich wiederholende Codeabschnitte zu vermeiden und sie bei Bedarf immer wieder zu verwenden. Es hilft auch, dynamische Variablen innerhalb des Codes zu erstellen, die für verschiedene Laufinstanzen desselben Codes unterschiedliche Werte annehmen können. Makros können auch für Codeblöcke deklariert werden, die in ähnlicher Weise wie Makrovariablen mehrfach verwendet werden. In den folgenden Beispielen werden wir beides sehen.

Makrovariablen

Das sind die Variablen, die einen Wert enthalten, der immer wieder von einem SAS-Programm verwendet wird. Sie werden am Anfang 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, weil auf sie jedes in der SAS-Umgebung vorhandene SAS-Programm zugreifen kann. Im Allgemeinen handelt es sich um vom System zugewiesene Variablen, auf die von mehreren Programmen zugegriffen wird. Ein allgemeines Beispiel ist das Systemdatum.

Beispiel

Nachfolgend ein Beispiel für die SAS-Variable namens SYSDATE, die das Systemdatum darstellt. Stellen Sie sich ein Szenario vor, bei dem das Systemdatum an jedem Tag, an dem der Bericht generiert wird, in den Titel des SAS-Berichts gedruckt wird. Der Titel zeigt das aktuelle Datum und den aktuellen Tag an, ohne dass wir dafür irgendwelche Werte kodieren. Wir verwenden den eingebauten 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

Diese Variablen können von SAS-Programmen aufgerufen werden, in denen sie als Teil des Programms deklariert sind. Sie werden typischerweise verwendet, um verschiedene Variablen an dieselben SAS-Anweisungen zu liefern, so dass sie verschiedene Beobachtungen eines Datensatzes verarbeiten können.

Syntax

Die lokalen Variablen werden mit der folgenden Syntax deklariert.

% LET (Macro Variable Name) = Value;

Hier kann das Feld Wert einen beliebigen numerischen, Text- oder Datumswert annehmen, wie vom Programm benötigt. Der Name der Makrovariable ist eine beliebige gültige SAS-Variable.

Beispiel

Die Variablen werden von den SAS-Anweisungen verwendet, indem das Zeichen & am Anfang des Variablennamens angefügt wird. Das folgende Programm liefert uns alle Beobachtungen der Marke ‚Audi‘ und des Typs ‚Sports‘. Falls wir das Ergebnis einer anderen Marke wünschen, müssen wir den Wert der Variable make_name ändern, ohne einen anderen Teil des Programms zu ändern. Bei Bring-Programmen kann diese Variable immer wieder in beliebigen SAS-Anweisungen 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. Ändern wir aber den Typnamen in ‚Wagon‘ und führen das gleiche Programm aus. Wir erhalten das folgende Ergebnis.

Makroprogramme

Makro ist eine Gruppe von SAS-Anweisungen, auf die durch einen Namen verwiesen wird und die in einem Programm überall unter diesem Namen verwendet werden kann. 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 deklariert eine Gruppe von SAT-Anweisungen 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.

Gebräuchliche Makros

SAS hat viele MACRO-Anweisungen, die in die SAS-Programmiersprache eingebaut sind. Sie werden von anderen SAS-Programmen verwendet, ohne dass sie explizit deklariert werden, z.B. um ein Programm zu beenden, wenn eine Bedingung erfüllt ist, oder um den Laufzeitwert einer Variablen im Programmprotokoll festzuhalten. Nachfolgend sind einige Beispiele aufgeführt.

Makro %PUT

Diese Makroanweisung schreibt Text- oder Makrovariableninformationen in das SAS-Protokoll. Im folgenden Beispiel wird der Wert der Variable ‚heute‘ 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 die normale Beendigung des aktuell ausgeführten Makros, wenn eine bestimmte Bedingung als wahr bewertet wird. Im folgenden Beispiel wird das Makro beendet, wenn der Wert der Variablen „val“ 10 wird, andernfalls 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 %END

Diese Makrodefinition enthält eine %DO %WHILE-Schleife, die bei Bedarf mit einer %END-Anweisung endet. Das Ende der DO-Schleife wird durch die %end-Anweisung erreicht, während das Ende des Makros durch die %mend-Anweisung 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.

Werbung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.