Bedingte Abarbeitung von Code
Guten Tag,
ich möchte ein SAS-Programm zweimal im Monat laufen lassen. Einmal wird ein kompletter Datenbestand verarbeitet und einmal nur ein Teil davon. Da das Programm beides Mal dasselbe tut, soll der Teil, der die zusätzlichen Daten aufruft nur dann laufen, wenn komplett verarbeitet werden soll.
Beispiel:
/* SAS-Befehle, Macro-Definition */
......
/* Aufruf der Verarbeitung */
%Berechnungs(Daten1);
%Berechnungs(Daten2);
%Berechnungs(Daten3);
/* Programmende */
Ich habe nun mit einigen Varianten versucht, den zweiten und dritten Aufruf nur dann auszuführen, wenn er benötigt wird. Z.B.:
/* SAS-Befehle, Macro-Definition */
%let Verarbeitung=voll;
......
/* Aufruf der Verarbeitung */
%Berechnungs(Daten1);
if &Verarbeitung.=voll then do;
%Berechnungs(Daten2);
%Berechnungs(Daten3);
%end;
/* Programmende */
Weder diese Syntax, noch der Versuch über %if, noch das einbetten in einen datastep (data _Null_) hat funktioniert. In der Regel gibt es einen Syntaxfehler oder der Befehl ist an der Stelle nicht zulässig.
Wie kann ich eine bedingte Ausführung der Makroaufrufe erreichen?
Gruß, Jürgen Schreurs
- Anmelden oder Registrieren um Kommentare zu schreiben

Makro
Mit einer Makrodefinition geht es:
%Berechnungs(Daten1);
%if &Verarbeitung.=voll then do;
%Berechnungs(Daten2);
%Berechnungs(Daten3);
%end;
%mend verarb;
%let Verarbeitung=;
%verarb() /* nicht volle Verarbeitung */
%let Verarbeitung=voll;
%verarb() /* volle Verarbeitung */
Oder mit einem Makroparameter:
%Berechnungs(Daten1);
%if &Verarbeitung.=voll then do;
%Berechnungs(Daten2);
%Berechnungs(Daten3);
%end;
%mend verarb;
%verarb() /* nicht volle Verarbeitung */
%verarb(verarbeitung=voll) /* volle Verarbeitung */
Der Unterschied zwischen den beiden Varianten ist nur, dass einmal die Makrovariable verarbeitung global mit %LET definiert wird und einmal als lokaler Makroparameter.
Funktioniert
Hallo Herr Mangold,
eingebaut, getestet und funtkioniert.
Vielen Dank.
Ich habe die Variante 1 gewählt, da wir ohnehin am Anfang des Programms einige Parameter setzten.
Jürgen Schreurs