如何在日志中打印前导空格?
当我做
之类的事情时data _null_;
x = ' Hello, world!';
put x;
run;
结果是
2522 data _null_;
2523 x = ' Hello, world!';
2524 putlog x;
2525 run;
Hello, world!
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
我浏览了PUT documentation,但没有什么能让我感到高兴。似乎使用$CHARw.之类的格式可能会起作用。但是,这需要提前知道字符串的长度。
我希望日志输出看起来像这样:
Hello, world! (<--edited by hand to display leading spaces)
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
答案 0 :(得分:4)
因此,如果您只想添加前导空格,可以使用@n指针控件。
putlog @3 x ;
如果您想有条件地构建X,使其有时只有前导空格,那么您可以使用$varying.
格式。您需要定义一个具有您想要写入的长度的变量,但您不需要修改使用的格式。
166 data _null_;
167 do i=3 to 1 by -1 ;
168 x = substr(' Hello, world!',i);
169 len = length(x);
170 putlog x $varying80. len ;
171 end;
172 run;
Hello, world!
Hello, world!
Hello, world!
答案 1 :(得分:2)
使用+2
(或多长时间)与put(但不是putlog)一起使用。
data _null_;
x = ' Hello, world!';
put +2 x $;
run;
使用putlog
,您必须add an @ or something similar to trick the compiler:
data _null_;
x = ' Hello, world!';
putlog @ +2 x $;
run;
答案 2 :(得分:1)
您可以尝试使用不可打印的字符 - 同时使用put和putlog
data _null_;
x = '09'x !! ' Hello, world!';
putlog x;
run;
在日志中创建“空白”的其他方法包括:
data _null_;
x = '09'x !! ' Hello, world!';
put // x // '09'x;
run;
/
可让您添加空行。
此外,您可以通过添加短划线将日志的各个部分分类为NOTE / WARNING / ERROR,如下所示:
data _null_;
put 'NOTE: ';
put 'NOTE- Check';
put 'NOTE- This';
put 'NOTE- Out!';
put 'NOTE- ';
run;
答案 3 :(得分:1)
我使用@ Joe的答案并从中构建。事实证明+
指针控件是动态的。也就是说,指针位置可以由数据集变量控制。当你不知道会有多少空格时,这很有用。
211 data _null_;
212 string = ' Hello, world!';
213 len_string = length(string);
214 len_stripped = length(strip(string));
215 leading_spaces = len_string - len_stripped;
216
217 put len_string= len_stripped= leading_spaces= ;
218 put;
219 put +leading_spaces string;
220 run;
len_string=20 len_stripped=13 leading_spaces=7
Hello, world!
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds