我想知道,有没有一种简单的方法可以在日志中的%put或put语句后插入空行,而无需添加额外的put语句?
我使用了很多宏来将信息写入日志。然而,连续日志语句上的空格开始看起来压缩了:
NOTE: [MACRO] Executing: Main()
NOTE: [MACRO] Executing: ImportData()
NOTE: [AUTOCALL] Executing: ExcelOpen(inFile=\\file\path\to\excelFile.xlsx)
NOTE: [AUTOCALL] Opening \\file\path\to\excelFile.xlsx...
NOTE: [AUTOCALL] Succesfully opened \\file\path\to\excelFile.xlsx.
NOTE: [AUTOCALL] EXCELOPEN macro used (Total process time):
real time 02.30 seconds
NOTE: [MACRO] Executing: ImportMortalityData()
NOTE: [MACRO] Executing: ImportMortalityDay0ToDay7()
NOTE: [AUTOCALL] Executing: EstablishDDELink(fileRef=mort0_7,
dirData=\\file\path\to\, fileName=excelFile.xlsx, sheetName=Mortality (Day0-7), range=R2C1:R500C5)
NOTE: [AUTOCALL] DDE link MORT0_7 established.
NOTE: [AUTOCALL] ESTABLISHDDELINK macro used (Total process time):
real time 00.27 seconds我可以在每个%put;或put;语句后插入一个额外的空白%put NOTE:或put NOTE:语句。然而,这会使代码变得杂乱无章,我想避免这种情况。
在其他语言中,像\r\n这样的东西会被添加到消息的末尾,但SAS似乎没有这些结构。我知道有十六进制值'OD'x (回车)和'OA'x (换行符)。然而,当我尝试使用它们时,它们被打印为文字。有什么想法吗?
发布于 2017-05-01 23:55:12
您需要使用单独的%PUT来写一个空行。请注意,如果您希望将颜色编码保留在SAS日志中,而不会出现NOTE:文本的混乱,则可以将NOTE:、WARNING:和ERROR:行开头的:替换为-。
%macro xx;
%* write lines to the log ;
%put NOTE: [&sysmacroname] Starting. ;
%put NOTE- [&sysmacroname] Middle Note. ;
%put NOTE- %sysfunc(repeat(%str( ),%length(&sysmacroname)+1)) Middle Note Unlabeled. ;
%put ;
%put NOTE: [&sysmacroname] Ending. ;
%put ;
%mend xx;

发布于 2017-05-01 23:29:04
对于PUT语句,您可以使用/,例如:
142 data _null_ ;
143 put "hi" / "mom" ;
144 run;
hi
mom但是除了添加一个空的%PUT语句之外,我不知道有什么方法可以用%PUT来做到这一点。
PUT语句知道很多花哨的东西(/、@、@@、分隔符等),主要是因为它用于写入文件(除了日志之外)。相比之下,由于%PUT仅写入日志,因此它没有用于花哨的报告内容的所有选项。
https://stackoverflow.com/questions/43721478
复制相似问题