Sto solo cercando di concatenare due variabili macro citate ma non sembra essere un modo semplice.Variabili macro quotate concatenate
Dire che abbiamo:
%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;
Io in realtà voglio:
"This is not the greatest song in the world this is just a tribute."
Ma il codice precedente produce in realtà:
"This is not the greatest song in the world" "this is just a tribute."
così cerco di mettere %QUOTE()
, %BQUOTE
, ecc. circa &VAR1
e %VAR2
nella speranza di smascherare le virgolette ma ottengo lo stesso risultato.
L'unica cosa che funziona per me è:
%LET TRIBUTE="%SUBSTR(&VAR1.,2,%LENGTH(&VAR1.)-2) %SUBSTR(&VAR2.,2,%LENGTH(&VAR2.)-2)";
Ma questo è brutto e può ottenere lungo veramente veloce. Non c'è un modo migliore per farlo?
Due cose ... in primo luogo - non sapevo della sintassi '& =' - grazie! In secondo luogo, potresti semplificare l'assegnazione di var3 a '% let VAR3 ="% unquote_string (string = & var1 & var2.) ";'. –
È assolutamente possibile semplificarlo in questo modo. Mi piace un po 'di più, tuttavia, poiché è più chiaro di cosa si stanno rimuovendo le virgolette - una sorta di parallelo a come% UNQUOTE funziona fino alla quotatura delle macro. (Penso che dovresti chiamarlo due volte se questi erano mvars citati in una macro). – Joe
In realtà, ora che ci penso, è un pessimo esempio di quando creare una funzione FCMP o una funzione macro, poiché si stanno semplicemente avviando chiamate a una funzione esistente .... si può anche chiamare direttamente la funzione . –