我想知道,有没有一种简单的方法可以在日志中%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
(换行符)。然而,当我尝试使用它们时,它们被打印为文字。有什么想法吗?
答案 0 :(得分:1)
对于PUT语句,您可以使用/
,例如:
142 data _null_ ;
143 put "hi" / "mom" ;
144 run;
hi
mom
但除了添加null%PUT语句之外,我不知道如何使用%PUT进行此操作。
PUT语句知道很多花哨的东西(/,@,@,分隔符等),主要是因为它是用于写入文件(除了日志)。相比之下,由于%PUT只写入日志,因此它并不具备花哨报告内容的所有选项。
答案 1 :(得分:1)
您需要使用单独的%PUT来写一个空白行。请注意,如果要在SAS日志中保留颜色编码而不使用NOTE:text的混乱,可以在NOTE:,WARNING:和ERROR中替换:with - :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;