Макропеременная из другой макропеременной - PullRequest
0 голосов
/ 16 июня 2020

Допустим, я хочу создать макропеременную, например:

%let year=2019;

%let ye = SUBSTR(%year,3,2) (I want to extract 19 from 2019).

Но это не работает. Есть ли у нас какие-либо возможности для создания такой макро-переменной? чтобы использовать набор данных с именем «data1904» в моей библиотеке. Я хочу создать что-то вроде

%let dataname= CAT(SUBSTR(%yearend,3,2),%monthend)

1 Ответ

1 голос
/ 17 июня 2020

Вы используете & для ссылки на макропеременную, а не%. Когда вы используете функцию в коде макроса, вам нужно обернуть ее в %SYSFUNC(), чтобы компилятор мог различать текст и код .

%let ye = %sysfunc(substr(&year, 3, 2));

Или, альтернативно, есть %SUBSTR() макрос функция , которая позволяет пропустить% SYSFUN C ().

%let ye = %substr(&year, 3, 2); 
...