SAS Macro variable and ampersands.

Всем привет!

В сегодняшнем уроке рассмотрим такой интересный момент, как процесс компиляции макро переменных в зависимости от количества амперсандов стоящих перед этой переменной.

Для лучшего понимания компиляции советую подключить опцию: options symbolgen;

И так давайте рассмотрим пример:
Создадим две макро  переменных, причем значение первой макро переменной является названием второй.

















В данном примере все понятно. Теперь добавим еще один амперсанд:








Вот теперь становиться интересней. В данном случае мы видим, что двойной амперсанд превратился в одинарный и результат получился как в первом случае.

Добавим еще один амперсанд:

Теперь мы видим, что на первом шаге два амперсанда были превращены в один, а следующий (т.к. он остался один) был расценен как макро переменная и вернул значение firstmacro. На следующем шаге наш амперсанд (который получился из двух первых) был применен уже к firstmacro и мы получили в результате значение second_.

Рассмотрим четыре амперсанда:

Здесь все просто. Две пары схлопнулись в два аперсанды и они уже затем опять схлопнулись в один. 

Рассмотрим пять аперсандов:

В принципе здесь также по аналогии все понятно:
&&&&&macro1 =  (&&)(&&)(&macro1) -> &&firsmacro=(&&)firstmacro -> &firstmacro -> _second.

Далее привожу видео, где эксперимент проводился с 6 и 7 амперсандами.






Источник к данной статье можно посмотреть здесь!

С уважением,
Николай. 




Ярлыки: ,