sas MACRO kaufmännisches Und

8
%Vor%

Nun. Ich bin von diesen kaufmännischen Ampeln total geschlagen. Ich verstehe nicht, warum sie so viele kaufmännische Und-Zeichen vor einer Makrovariablen brauchen. Gibt es einen Trick, um die Verwendung von kaufmännischen Und-Zeichen zu beherrschen? BTW, was sind die fünf Ergebnisse, entsprechend?

    
zhuoer 07.04.2014, 04:51
quelle

1 Antwort

13

Mit einem einzigen Satz kaufmännischer Ampeln ist das, was Sie bekommen, ziemlich langweilig; nach einem führt eine ungerade Anzahl von Et-Zeichen zu einer doppelten Auflösung, eine gerade Anzahl von Amp-Strings wird einmal aufgelöst. Sie verwenden also 1 kaufmännisches Und-Wort, um es einmal zu lösen, und 3 kaufmännische Und-Zeichen, um es zweimal zu lösen, es sei denn, Sie haben Aktien in der Firma, die Rechte an kaufmännischen Und-Zeichen besitzt.

Interessanter ist der folgende Test, der zeigt, warum gerade Zahlen von Und-Zahlen einen Wert haben:

%Vor%

Grundsätzlich führt SAS bei jedem Durchlauf Folgendes durch:

  • Beheben Sie einen einzelnen kaufmännischen Und-Plus-Text in einer Makrovariablenreferenz.
  • Lösen Sie alle Paare von kaufmännischen Und-Zeichen zu einem kaufmännischen Und-Zeichen.

Diese werden gleichzeitig und iterativ ausgeführt, bis alle Ampersands verschwunden sind und jedes Ergebnis für die nächste Iteration beibehalten wird und die aktuelle Iteration nicht beeinflusst. So wird &test&one zu onetwo , weil &test - & gt; eins und &one - & gt; zwei. Schritte für die verbleibenden:

  • &&test&one - & gt; &testtwo - & gt; %Code%. %Code%. Die doppelte one vor dem Test wird &&|test|&one , der Test bleibt bestehen und && wird in & aufgelöst. Damit bleibt &one für den zweiten Durchlauf übrig, der in two aufgelöst wird.
  • &testtwo - & gt; one - & gt; löst nicht auf. &&&test&one - & gt; &onetwo - & gt; DNR.
  • &&|&test|&one - & gt; &|one|two - & gt; &&&&test&one - & gt; ein. &&testtwo - & gt; &testtwo - & gt; &&|&&|test|&one - & gt; ein. Zwei Paare werden jeweils auf eins aufgelöst, wodurch ein Paar entsteht, das dann in eins aufgelöst wird, wodurch &&|testtwo aufgelöst wird.
  • &testtwo ähnelt drei kaufmännischen Und-Fällen, aber mit einem zusätzlichen Paar.
  • &testtwo wird in &&&&&test&one aufgelöst in &&&&&&test&one wird in zwei aufgelöst. &&&testtwo - & gt; &one - & gt; &&|&&|&&|test|&one - & gt; zwei. Die ungerade Anzahl von Paaren bedeutet, dass wir einen weiteren Satz von Auflösungen erhalten.

Am Ende des Tages, was Sie sich merken müssen:

  • 1 kaufmännisches Und löst die Makrovariable einmal auf und das war's.
  • 2 kaufmännische Zeichen ist nützlich für zusammengesetzte Makrovariablen, dh ein Präfix plus ein Makro-gesteuertes Suffix (% ​​co_de%).
  • 3 kaufmännisches Und-Zeichen ist hilfreich, um eine einzelne Makrovariable ( &&|&testtwo - & gt; &one - & gt; &&prefix&suffix ) zu lösen.
  • 6 Ampersands ist nützlich für die Auflösung einer zwei tiefen zusammengesetzten Makrovariablen (dh Kombination von 2 und 3) ([ &&&var , &var2 ] var3 - & gt; &prefix=var - & gt; &suffix=2 - & gt; &&&&&&prefix&suffix ).

Darüber hinaus sind 4 oder mehr (außer 6) nur für besonders komplexe Kombinationen nützlich; die zusätzlichen Ebenen würden verwendet, um die Auflösung bis zu bestimmten Zeiten zu verzögern.

    
Joe 07.04.2014 14:38
quelle

Tags und Links