如何使用SAS在RTF文件顯示特殊字符
通常來講,注釋語句有四種:
1、* message;
2、COMMENT message;
3、/* message */
4、%* message;
第一種的主要限制是注釋之中不得有“;”符號。通常用于非宏程序之中。
第二種和第一種相同。
第三種的主要限制是不得包含另外的注在用SAS做臨床試驗相關(guān)的listing, table的過程中,我們可能會遇到在列表或表格中顯示上標、下標、大于等于號等特殊符號的情況。下面介紹在SAS中如何編程使rtf文件顯示特殊字符。
方法1:使用~{super }, ~{sub}顯示上、下標
data a;
length var1 $100.;
var1="a~{super 2}+b~{super 2}=c~{super 2}";
output;
var1="This is something that needs a footnote.~{super 1}";
output;
var1 = "the carbon dioxide molecule is CO~{sub 2}";
output;
run;
ods listing close;
ods rtf;
title "特殊字符";
proc report data=a;
column var1;
define var1/"上標和下表例子";
run;
ods rtf close;
ods listing;
方法2:使用unicode
步驟1:在電腦上搜索字符映射表(character map),查到對應(yīng)特殊字符的unicode
從上圖我們可以看到,小于等于號的unicode為2264
步驟2:在sas中使用unicode
data le;
length var1 $100.;
var1="~{unicode 2264}10";
run;
run;
ods listing close;
ods rtf;
proc report data=le;
column var1;
define var1 /"Demo of unicode" style(column)=[cellwidth=20%];
run;
ods trf close;
圖片語句。
第四種用于在宏程序里做注釋,其功能和第一種在非宏的文本里很相似。第三種注釋對宏和非宏程序并無區(qū)分。如果把第一種方式移植到宏程序里,出錯誤的機率非常大。舉一例:
%macro comments;
*%do i=1;
%mend;
%comments;
方式1和2屬于完整的SAS聲明語句。他們在程序編譯時總被TOKENIZER和MACRO FACILITY處理;因此無法含有“;”及非對稱的引號。在宏編譯時它們被作為文本常量存儲,因此在注釋里的宏聲明語句將被執(zhí)行。比如說以上%DO命令將被執(zhí)行。因此,SAS建議最好不要在宏程序里使用1和2類的注釋語句。
與此相反,第3類注釋語句不被TOKENIZED(標記化),而只是作為字符串處理。這一類的語句并沒有在編譯的宏程序里儲存。
對于第4類的注釋語句,因其文本并非是常量因此沒有在編譯的宏程序里儲存。但是作為完整的宏程序語句,它的確為MACRO FACILITY處理。綜上所述,只有3和4類的注釋語句應(yīng)被用于隱藏宏聲明程序。