Sas 如何使用SYSFUNCT和PUTC或PUTN

Sas 如何使用SYSFUNCT和PUTC或PUTN,sas,Sas,在一个宏中,我有两个变量,a和B。a是一个循环变量,是一个从1到12的整数。当A为1时,B需要为01,当A为2时,B需要为02,以此类推,当A为10时,B需要为10,当A为11时,B需要为11,当A为12时,B需要为12。基本上,B需要是2位数字,可能有前导零。在数据步骤中,这很简单: B=PUT(A,z2.); 但在宏中,这段代码不起作用,SYSFUNC也不适用于PUT函数。那么如何才能完成这项工作呢?putn工作正常putc用于传入的字符参数($formats),putn用于传入的数字参数

在一个宏中,我有两个变量,a和B。a是一个循环变量,是一个从1到12的整数。当A为1时,B需要为01,当A为2时,B需要为02,以此类推,当A为10时,B需要为10,当A为11时,B需要为11,当A为12时,B需要为12。基本上,B需要是2位数字,可能有前导零。在数据步骤中,这很简单:

B=PUT(A,z2.);

但在宏中,这段代码不起作用,SYSFUNC也不适用于PUT函数。那么如何才能完成这项工作呢?

putn
工作正常
putc
用于传入的字符参数($formats),
putn
用于传入的数字参数,如此

%let a=5;
%let b=%sysfunc(putn(&a,z2.));
%put &=a. &=b.;

答案就在你的标题里sysfunc(putn&a,z,2));谢谢,很好用。出于好奇,为什么它不能在datastep中工作:data hello;%设a=5;b=%sysfunc(putn&a,z2.);跑b将是1,而不是01!因为你没有使用引号。宏不生成数据步变量-它生成文本-因此解析为
b=05。为什么不使用%sysfunction进行工作?我也遇到了同样的问题,不得不使用putn。
put
是一个语句而不是一个函数。根据这个链接,它既是一个语句又是一个函数