2017-02-13 32 views
0

在一個宏中,我有2個變量,A和B.A是一個循環變量,是從1到12的整數.B在A爲1時需要爲01,在A爲02時是2等,當A是10時是10,當A是11時是11,當A是12時是12。基本上B需要是2位,可能具有前導零。在datastep這是很容易:如何使用SYSFUNCT和PUTC或PUTN

B=PUT(A,z2.); 

但宏的代碼將無法正常工作和SYSFUNC不會與PUT功能在裏面工作。那麼如何完成這項工作呢?

+0

答案在您的標題中。 %sysfunc(putn(A,Z,2)); –

回答

0

putn工作正常。 putc適用於輸入字符參數($格式),putn適用於像這樣的輸入數字參數。

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

謝謝,它工作正常。出於好奇,爲什麼它不能在datastep中工作:data hello; %let a = 5; B =%sysfunc(putn(一,Z2));運行; b將會是1而不是01! – Raffaele

+0

因爲你沒有使用引號。宏不會生成數據步變量 - 它會生成文本 - 以便解析爲「b = 05;」。 – Joe

+0

爲什麼不把工作與%sysfunction?我有同樣的問題,不得不使用putn。 – fossekall