如何使用SAS在RTF文件显示特殊字符
通常来讲,注释语句有四种:
1、* message;
2、COMMENT message;
3、/* message */
4、%* message;
第一种的主要限制是注释之中不得有“;”符号。通常用于非宏程序之中。
第二种和第一种相同。
第三种的主要限制是不得包含另外的注在用SAS做临床试验相关的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),查到对应特殊字符的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;
图片语句。
第四种用于在宏程序里做注释,其功能和第一种在非宏的文本里很相似。第三种注释对宏和非宏程序并无区分。如果把第一种方式移植到宏程序里,出错误的机率非常大。举一例:
%macro comments;
*%do i=1;
%mend;
%comments;
方式1和2属于完整的SAS声明语句。他们在程序编译时总被TOKENIZER和MACRO FACILITY处理;因此无法含有“;”及非对称的引号。在宏编译时它们被作为文本常量存储,因此在注释里的宏声明语句将被执行。比如说以上%DO命令将被执行。因此,SAS建议最好不要在宏程序里使用1和2类的注释语句。
与此相反,第3类注释语句不被TOKENIZED(标记化),而只是作为字符串处理。这一类的语句并没有在编译的宏程序里储存。
对于第4类的注释语句,因其文本并非是常量因此没有在编译的宏程序里储存。但是作为完整的宏程序语句,它的确为MACRO FACILITY处理。综上所述,只有3和4类的注释语句应被用于隐藏宏声明程序。