2017-07-28 3 views
1

Laut% bquote() Makrofunktion Dokumentation Ich muss es zu Makrovariable nicht markieren ungepaarten „(“ mit% zuzuweisen.% bquote nicht maskieren ungepaarten Klammer

Aber dieser Code funktioniert nicht aus irgendeinem Grund (Variable var ist als Ergebnis freier Raum):

%let var=%bquote((); 
%put &var; 

Warum wie kann ich Code beheben erwartete Ergebnis zu produzieren

Antwort

2

Du verwechselst Maskierung bei Ausführungszeit mit bei Maskierung? Kompiliere Tim e.

%BQUOTE Masken Sonderzeichen at execution time:

Das% BQUOTE Funktion behandelt alle Klammern und Anführungszeichen durch Auflösen Makrovariablenreferenzen oder Makroaufrufe erzeugen Markierungen als Sonderzeichen zur Ausführungszeit maskiert werden. (Es spielt keine Klammern oder Anführungszeichen maskieren, die zum Zeitpunkt der Kompilierung im Argument sind.)

Um es auf Maske Zeit kompilieren, die Sie müssen, da Sie seinen Wert in einem %let zuweisen, müssen Sie verwenden %str, die does erfordert eine Klammer vor einer % vorausgehen.

%let var=%str(%(); 

%put &var;