Ich versuche, einen Variablenwert aus einem Dataset an ein Makro zu übergeben und in der Schleife do
zu verwenden.Verwenden von SYMGETN zum Angeben der Anzahl der Schleifen in% DO-Anweisung
data work.b;
set work.a;
if _N_ = 1 then call symput('foo', foo_var);
run;
%macro bar(max_loop_count);
%do i = 1 %to &max_loop_count;
* Some data steps here ;
%end;
%mend;
%bar(symgetn('foo'));
Allerdings erhalte ich diese Fehlermeldung:
ERROR: Required operator not found in expression: &max_loop_count
ERROR: The %TO value of the %DO I loop is invalid.
ERROR: The macro BAR will stop executing.
Was mache ich falsch hier?
Gibt es einen bestimmten Grund, symgetn anstelle von & foo bei macrocall zu verwenden? http://www.lexjansen.com/nesug/nesug04/pm/pm13.pdf Am Anfang der Seite 2 heißt es: "Umgekehrt ist SYMGET eine SAS-Sprache Funktion , die den Wert einer Makrovariablen an die zurückgibt DATA-Schritt während der Ausführung des DATA-Schritts. " Meine Vermutung wäre die Funktion symgetn ist nur für die Ausführung in einem Datastep, so dass Sie es nicht in einem Makroaufruf verwenden können. Aber ich kann das nicht mit mehr Referenzen sichern, also poste ich das nur als Kommentar. – kl78