2014-10-28 319 views

回答

3

像这样:

%let y=%sysfunc(putn(&x.,hex4.)); 

[我想没有%put()宏功能,以避免与%put宏语句confustion]

+0

你如何知道格式为'hex'<#>'?'? – synaptik 2014-10-28 16:18:31

+1

它指定输出字符串的长度。如果你的数字范围高于#FFFF,你会想挑选更大的东西。 – Jeff 2014-10-28 16:58:41

+0

没有'%put()',因为这不是宏语言的正常用法。 'put()'和'put'(日志/文件写入)都存在于数据步骤语言中。 – Joe 2014-10-28 18:31:18

1

如果你想存储的十六进制字符串表示,可能要在Datastep程序中执行。

方法如下:

%let x=42165; 
%put &x; 

%let y=; 

data _null_; 
    call symput('y',put(&x,hex4.)); 
run; 

%put &y; 

这工作。如果您需要将值存储到数据集中,只需修改程序。

1

Jeff的答案很好,但是如果通过%sysfunc生成&x作为数据步骤函数的输出,则可以通过使用%sysfunc本身(例如,)来应用格式来保存几个字符。

%let y = %sysfunc(sum(42000, 165), hex4.); 
相关问题