2014-05-21 5 views
2

У меня есть вопрос о качестве экзаменационного, который спрашивает, что читается в журнале SASSAS непрямого макро обработка

%let test=one; 
%let one=two; 
%let two=three; 
%let three=last; 

%put what displays is &&&&&test; 

Я был очень удивлен, чтобы найти ответ был: два, как я бы подумал, что эта ссылка будет полностью устранена до последней. SAS также соглашается с ответом два.

Может кто-нибудь объяснить, как SAS прибывает в ответ два как все теории нот я прочитал говорит, что Макропроцессор необходимо сделать следующее

  • Scan1 & & & & & тест -> & & & & test (т.е. & & разрешает & и сообщает процессору продолжить сканирование с ri GHT налево)
  • scan2 & & & & тест -> & & & один
  • scan3 & & & один -> & & два
  • scan4 & & два -> & три
  • scan5 & три - > последняя

ответ

5

Использование опции symbolgen может помочь увидеть, что происходит в журнале:

1 options symbolgen; 

2 %let test=one; 
3 %let one=two; 
4 %let two=three; 
5 %let three=last; 
6 
7 %put what displays is &&&&&test; 
SYMBOLGEN: && resolves to &. 
SYMBOLGEN: && resolves to &. 
SYMBOLGEN: Macro variable TEST resolves to one 
SYMBOLGEN: && resolves to &. 
SYMBOLGEN: Macro variable ONE resolves to two 
what displays is two 

Going слева направо и с помощью скобок, чтобы показать маркеры:

&&&&&test 
(&&)(&&)(&test) 
(&) (&) (one) 
&&one 
(&&)(one) 
(&)(one) 
&one 
two 
+1

Спасибо за ваш ответ. Однако SAS Certification Prep guid объясняет эту логику по-разному. Говорят, что 1-е сканирование разрешает двойные амперсанды и одиночные амперсанды, а затем формирует затем одно сканирование на право слева. ваша логика (которая, очевидно, правильна), кажется, имеет форму разрешения left rto right, и coninuesto разрешает && to & .. странно. Все еще unclrea о том, как это работает вообще, но thansk для вашего ответа :-) – user3661461

+1

[SAS Macro Language Reference] (http://support.sas.com/documentation/cdl/en/mcrolref/64754/HTML/default/viewer. htm # n0vl7e3du5f7cjn1g4ajozqxe6b6.htm) говорит: «Он разрешает всю ссылку слева направо». У меня нет руководства по подготовке к сертификации SAS, но то, что вы процитировали справа налево, для меня нова. – Amir

+0

Посмотрите на вопрос, о котором вы говорите; Ниже я расскажу о некоторых ответах. Я бы сказал, что руководство по подготовке, вероятно, не так, но, вероятно, сформулировано смутно - но также нет руководства по подготовке, поэтому не знаю точно. – Joe

 Смежные вопросы

  • Нет связанных вопросов^_^