在SAS7/8中使用SAS9的数据文件
SAS®9 的用户能共享SAS文件给使用以前版本的用户,但是不同的环境共享的方法不一致,在某些情况下,文件可以直接使用,如果不行,则你需要改变文件的格式到以前的版本.
注意:不要使用PROC CPORT或者PROC CIMPORT来复原,否则你将在导入时碰到下面错误: ERROR: TRANSPORT FILE IS BAD ERROR: The value is not a valid SAS name CPORT 传输文件是用来允许SAS用户以在不同平台共享SAS数据文件,它是被设计用力支持最新的SAS特征. 因此,其导出的文件不能用于以前的版本的 SAS. |
I
如果兼容则不需要复原了,读下面章节以决定文件是否兼容
如果你共享SAS数据文件在相同平台,在这个情况下,文件本称为本地文件,否则称为外部文件
SAS9文件和SAS7/8文件有相同的文件格式和相同的扩展,本地SAS9文件是完全兼容SAS7/8的,只要你没有使用SAS9的新特性,你可以不需要做任何改变就可以在SAS7/8下直接使用
如果为外部文件,SAS则在CEDA(交叉环境数据访问)的机制下处理它
通过CEDA,你可以在SAS7/8中读SAS9的文件,你能传输你的数据文件作为二进制方式从一台主机传送到另一台主机,无需任何额外步骤就可以使用
你不能简单的使用V8引擎来使用复原的SAS9文件,也不能使用PROC CPORT和PROC CIMPORT来导入导出SAS数据文件,下面表格列出了直接使用的限制
复原SAS9文件到SAS7/8的方法 | |
方法 | 限制 |
带NOCLONE选项的PROC COPY过程 | 必须运行在SAS7/8会话中 |
数据步 | 必须运行在SAS7/8会话中 |
XPORT 引擎 | 截断变量名到8个字符 |
OUTREP= |
|
在SAS7、8会话中,你可以使用带NOCLONE选项的COPY过程,用于赋值一个外部文件到一个本地文件,例如:
libname intest '你的外部文件的路径';
libname outtest '你的本地文件的路径';
proc copy in=intest out=outtest noclone;
/* 使用SELECT语法用于选择指定要复制的数据集*/
select my-data-set;
run;
直接使用,例如
libname intest '你的外部文件的路径';
libname outtest '你的本地文件的路径';
data outtest.native-filename;
set intest.foreign-filename;
run;
XPORT 引擎运行轻便的在不同平台和不同版本间进行访问的能力,你可以在SAS9里建立一个transport 文件然后在SAS 6/7/8 会话中恢复它
XPORT引擎支持某些5版本的命名规则,变量名要少于8个字符且标签要少于40个字符,如果你的数据步遵循这个规则,你必须指定系统选项VALIDVARNAME=V6, 这样会自动截断变量名和标签,例如
options validvarname=v6
下面代码运行在SAS9会话中
libname source 'pathname-of-v9-file';
/* Give the transport file a name and extension */
/* In this case, the transport file is c:/mySAS/filename.stx */
libname xportout xport 'c:/mySAS/filename.stx';
proc copy in=source out=xportout;
/* Use the SELECT statement to specify a single data set */
select my-data-set;
run;
下面代码运行在SAS7/8会话中
libname xportin xport 'c:/mySAS/filename.stx';
libname target 'pathname-for-v8-file';
proc copy in=xportin out=target;
run;
如果你想避免上面XPORT提到的缺点,你可以建立一个SAS文件加上OUTREP选项,其可以附加在数据集和LIBNAME语句中,这样会产生相应平台对应的SAS文件数据格式
OUTREP选项的赋值列表如下
- ALPHA_TRU64
- ALPHA_VMS_32
- ALPHA_VMS_64
- HP_IA64
- HP_UX_32
- HP_UX_64
- INTEL_ABI
- LINUX_32
- LINUX_IA64 (SAS 9.1.3 a nd later)
- MIPS_ABI
- MVS_32
- OS2
- RS_6000_AIX_32
- RS_6000_AIX_64
- SOLARIS_32
- SOLARIS_64
- VAX_VMS
- WINDOWS_32
- WINDOWS_64
附加:
如果你有SAS/CONNECT使用授权,你也可以使用proc upload来在不同平台不同版本间进行SAS数据文件传送,例如当从WIN上的SAS9传送到UNIX下的SAS8时使用下面语句:
rsubmit;
proc upload in=客户端数据集
out=服务器端数据集 v6transport;
select 你的SAS文件;
run;
endrsubmit;
加上v6transport 可以确保数字型数据能被正确的传送过来