#macros #sas #format
#макросы #sas #форматирование
Вопрос:
Меня действительно смущают форматы, заданные макропеременным. Выполняется попытка форматирования двух переменных. Один работает, а другой нет!
Код является:
proc format;
value classgrp
1 = 'Total Resurfacing'
2 = 'Cemented Total Conventional'
3 = 'Cementless Total Conventional'
4 = 'Hybrid Total Conventional'
value hrtp
1='0-1Mth'
2='1Mth-'
3='3Mth-'
4='1Yr-'
5='5Yr-'
6='10Yr '
;
run;
%macro t(varfmt,tpfmt);
%do m=2 %to 3;
%let mformat=%sysfunc(putn(amp;m., amp;varfmt.));
%let tpformat=%sysfunc(putn(amp;m., amp;tpfmt.));
%put ****variable amp;mformat.*****;
%put ****time period amp;tpformat.*****;
%end;
%mend;
%t(varfmt=classgrp.,tpfmt=hrtp.);
Выходные данные
ПРЕДУПРЕЖДЕНИЕ: аргумент 2 для функции PUTN, на которую ссылается макрофункция %SYSFUNC или %QSYSFUNC, находится вне диапазона. **** переменная цементируется всего за обычный ***** *** период времени ***** ПРЕДУПРЕЖДЕНИЕ: аргумент 2 для функции PUTN, на которую ссылается макрофункция %SYSFUNC или %QSYSFUNC, находится вне диапазона. **** переменный бесцементный общий обычный ******** период времени *****
Только форматы classgrp успешно передаются в макропеременную «mformat». Итак, почему макропеременная tpformat не может получать форматы из hrtp?
Спасибо, Андреа
Комментарии:
1. Я не получаю никаких ошибок. Проверьте свой предыдущий код на наличие ошибок — в конце первого формата не хватает точки с запятой.
2. Ха, Риза, орлиный взор! Спасибо! Просто сосредоточился на аргументах, не обращал внимания на точки с запятой.