2014-12-24 1 views
2

Пример кода: -Macro разница SAS между% ул и% bquote

%Let a = begin; 

%let b1 = %str(&a); 

%let b2 = %nrstr(&a); 

%let b3 = %bquote(&a); 

%let b4 = %nrbquote(&a); 

%let b = end; 

Фактический выход: -

b1 = begin 
b2 = &a 
b3 = begin 
b4 = begin 

Ожидаемый результат: -

b3 = end  
b4 = &a 

Является ли это потому, что bquote и nrquote - время выполнения, тогда как str и nrstr - время компиляции?

+0

Ваш вопрос непонятен! Не могли бы вы сделать его немного сообразительным? – NEOmen

ответ

3

Как объяснено в руководстве SAS http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#z3514quote.htm,

% ЦИТАТА и% NRQUOTE маски одни и те же элементы, как и% STR% NRSTR, соответственно. Тем не менее,% STR и% NRSTR маскируют постоянный текст вместо разрешенного значения. И,% STR и% NRSTR работают, когда макрос компилируется, а% QUOTE и% NRQUOTE работают, когда выполняется макрос.