SAS Macro variable and ampersands.

Всем привет!

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

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

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

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

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

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

Теперь мы видим, что на первом шаге два амперсанда были превращены в один, а следующий (т.к. он остался один) был расценен как макро переменная и вернул значение firstmacro. На следующем шаге наш амперсанд (который получился из двух первых) был применен уже к firstmacro и мы получили в результате значение second_.
Рассмотрим четыре амперсанда:
Здесь все просто. Две пары схлопнулись в два аперсанды и они уже затем опять схлопнулись в один. 
Рассмотрим пять аперсандов:
В принципе здесь также по аналогии все понятно:
&&&&&macro1 =  (&&)(&&)(&macro1) -> &&firsmacro=(&&)firstmacro -> &firstmacro -> _second.
Далее привожу видео, где эксперимент проводился с 6 и 7 амперсандами.

Источник к данной статье можно посмотреть здесь!
С уважением,
Николай. 

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.