/ / Dlaczego nawias końcowy nie zamyka mojej funkcji% nrstr? - sas, sas-macro

Dlaczego nawias końcowy nie zamyka mojej funkcji% nrstr? - sas, sas-macro

Moim celem jest przekazanie symboli procentowych do ciągu znaków.

Nie ma wyniku dla% wstawionego po uruchomieniu:

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

Jeśli uruchomisz ponownie, dostaję błędy, pierwszy jest

OSTRZEŻENIE: Obecnie cytowany ciąg znaków stał się bardziej niż 262 bajty. Możesz mieć niezbilansowane znaki cudzysłowu. "

W Przewodniku po przedsiębiorstwie narzędzie do tworzenia nawiasów nie wykrywa zamkniętego nawiasu.

Dodawanie kolejnego nawiasu zamykającego:

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

wyniki:

foo to bar% x)

% nrstr przejdzie do wyniku w niezbalansowanym nawiasie, więc nie jest to zaskakujące, co mogłoby sugerować, że fragment z otwartym i zamkniętym nawiasem jest zrównoważony.

Odpowiedzi:

3 dla odpowiedzi № 1

Symbol procentu przed zamkniętym nawiasem powodował nieoczekiwane zachowanie.

Za SAS (R) 9.2 Język makr: odniesienie:

znak procentu przed nawiasem - na przykład% (lub%) dwa znaki procentu (%%): PRZYKŁAD:% let x =% str (20 %%);

tworzenie poprawnego kodu:

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

w wyniku:

foo to bar% x%