/ / Perché la parentesi finale non chiude la mia funzione% nrstr? - sas, sas-macro

Perché la parentesi finale non chiude la mia funzione% nrstr? - sas, sas-macro

Il mio obiettivo è quello di passare simboli percentuali in una stringa.

Non ci sono risultati per il% put quando corro:

%let foo = %nrstr(bar%x%);
%put foo is &foo;

Se corro di nuovo, ottengo errori, il primo è

ATTENZIONE: la stringa quotata attualmente in elaborazione è diventata di più di 262 byte. Potresti avere virgolette non bilanciate. "

In Enterprise Guide, la parentesi di corrispondenza non rileva la parentesi chiusa.

Aggiunta di un'altra parentesi chiusa:

%let foo = %nrstr(bar%x%));

i risultati:

pippo è bar% x)

% nrstr passerà la parentesi sbilanciata nel risultato, quindi questo non è sorprendente, questo sembra implicare che lo snippet con la parentesi aperta e chiusa sia bilanciato.

risposte:

3 per risposta № 1

Il simbolo della percentuale prima della parentesi chiusa causava il comportamento imprevisto.

Per SAS (R) 9.2 Macro Language: Riferimento:

segno percentuale prima di una parentesi - ad esempio,% (o%) due segni di percentuale (%%): ESEMPIO:% let x =% str (20 %%);

fare il codice corretto:

%let foo = %nrstr(bar%x%%);
%put foo is &foo;

con il risultato di:

pippo è bar% x%