在put或%put语句后插入空行

时间:2017-05-01 15:17:36

标签: sas

我想知道,有没有一种简单的方法可以在日志中%putput语句之后插入一个空行而不添加额外的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(换行符)。然而,当我尝试使用它们时,它们被打印为文字。有什么想法吗?

2 个答案:

答案 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;

enter image description here