2015-01-15 3 views
1

% let vc = 12025;формат макрокоманды для запятой6

идеальный выход (с форматом comma) - 12,025;

но %put %sysfunc(put(&vc,comma6.)) похоже не работает. Ошибка, как показано ниже.

ERROR: The PUT function referenced in the %SYSFUNC or %QSYSFUNC macro function is not found.

+0

Как вы создаете 'vc' макропеременную в первую очередь ? Макропеременные - это текст, поэтому вы должны создать его в правильном формате в первую очередь. – Joe

ответ

6

PUT функция не доступна с %SYSFUNC, однако вы можете использовать PUTN для числовых значений или PUTC для символа.

Попытка:

%put %sysfunc(putn(&vc,comma6.)); 
+0

Полный список функций, недоступных с '% sysfunc()' и '% qsysfunc()', см. В документации: http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/ default/viewer.htm # z3514sysfunc.htm –

2

В качестве альтернативы использованию putn() функции к значениям формата, возвращаемого %sysfunc() заключается в использовании небольшого известный 2-й параметра %sysfunc() следующим образом:

%let vc = 12025; 
%put %sysfunc(sum(&vc),comma6.); 

Второй аргумент применяется формат результата, возвращаемого любой функцией %sysfunc(). В приведенном выше примере я просто суммирую число, которое фактически просто возвращает число. Если это значение было символом, я мог бы использовать функцию cats().

Стоит отметить, как это упростит код, если вы хотите сделать что-то вроде:

%put %sysfunc(putn(%sysfunc(date()),date9.));  

как это делается:

%put %sysfunc(date(),date9.); 
+0

Почему '% put% sysfunc (& vc, comma6.);' не будет работать? – Lovnlust

+1

Вам необходимо предоставить функцию% sysfunc для работы @randombet. Сумма или кошка - всего лишь «трюк», поскольку они всегда возвращают то же значение, что и вход. –

Смежные вопросы