Ich versuche nur, zwei quotierte Makrovariablen zu verketten, aber es scheint keinen einfachen Weg zu geben.Verkettete Makrovariablen
Sagen wir:
%LET VAR1="This is not the greatest song in the world";
%LET VAR2="this is just a tribute.";
%LET TRIBUTE=%SYSFUNC(CATX(%STR(),&VAR1,&VAR2));
%PUT &TRIBUTE;
Ich möchte eigentlich:
"This is not the greatest song in the world this is just a tribute."
Aber der obige Code liefert tatsächlich:
"This is not the greatest song in the world" "this is just a tribute."
Also versuche ich %QUOTE()
setzen, %BQUOTE
usw. um &VAR1
und %VAR2
in der Hoffnung, die Zitate zu demaskieren, aber ich bekomme das gleiche Ergebnis.
Das einzige, was für mich funktioniert, ist:
%LET TRIBUTE="%SUBSTR(&VAR1.,2,%LENGTH(&VAR1.)-2) %SUBSTR(&VAR2.,2,%LENGTH(&VAR2.)-2)";
Aber das ist hässlich und kann sehr schnell lange erhalten. Gibt es keinen besseren Weg, dies zu tun?
Zwei Dinge ... Erstens - ich wusste nichts über die '& =' Syntax - danke! Zweitens könnten Sie Ihre var3-Zuweisung zu '% lassen VAR3 ="% unquote_string (string = & var1 & var2.) ";. –
Sie könnten es absolut so vereinfachen. Ich mag die oben genannten ein bisschen mehr, obwohl es klarer ist, was Sie Zitate aus entfernen - eine Art von Parallel zu, wie "% UNQUOTE" funktioniert so weit wie Makro-Zitat. (Ich denke, Sie müssten es zweimal aufrufen, wenn es sich um Makro-Mvars handelt). – Joe
Eigentlich, jetzt, wo ich darüber nachdenke, ist es ein schlechtes Beispiel dafür, wann man eine FCMP-Funktion oder Makrofunktion erstellen muss, da man Anrufe einfach in eine bestehende Funktion umschließt ... .kann die Funktion auch direkt aufrufen . –