Объявление макропеременной с оценкой функции в качестве значения - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в SAS.Я столкнулся с проблемой при попытке объявить макропеременную с результатом какой-либо операции в качестве значения.

data _null_; %let var1 = 12345; %let var2 = substr(&var1., 4,5); run;

Я получаю, что var2 имеет значение substr(&var1., 4,5) (строка) вместо 45 как хотелось бы.Как заставить объявление переменной вычислять функцию?

Извините, вопрос тривиален.Я посмотрел в документации немного, но не смог найти ответ.

1 Ответ

0 голосов
/ 10 октября 2018

Существует макроэквивалент под названием %substr(), который можно использовать следующим образом:

%let var1 = 12345;
%let var2 = %substr(&var1., 4,2);

%put var2 = &var2;

Обратите внимание, что операторы data и run не требуются для обработки языка макросов и 3-го аргументаto %substr()substr()) указывает желаемую длину, а не позицию последнего символа, поэтому я использовал 2 вместо 5.

Редактировать: Также, если естьне является макроэквивалентом, тогда вы можете использовать %sysfunc(), чтобы использовать функцию шага данных в макрокодеСм. документацию для получения полной информации, поскольку есть некоторые причуды, такие как не использование кавычек и несколько исключений из списка функций шага данных, которые можно использовать.

...