SAS:获取创建的 DBF 文件的文件大小
SAS: getting the filesize of created DBF file
我有 SAS 存储过程,它从 SAS 数据集 rr_udf_value 生成 DBF 文件并找到它的大小 (F_SIZE):
filename dbfout "/SASInside/DBF/myfile";
proc export
data=rr_udf_value
outfile=dbfout
dbms=dbf
replace;
run;
%let f_nm=/SASInside/DBF/myfile.DBF;
%let rc=%sysfunc(filename(onefile, &f_nm.));
%let fid=%sysfunc(fopen(&onefile));
%let F_SIZE=%sysfunc(finfo(&fid,File Size (bytes)));
%put &F_SIZE;
问题是变量 F_SIZE 在 STP 日志中为空。但是如果在执行 STP 之后我 运行 命令
%let f_nm=/SASInside/DBF/myfile.DBF;
%let rc=%sysfunc(filename(onefile, &f_nm.));
%let fid=%sysfunc(fopen(&onefile));
%let F_SIZE=%sysfunc(finfo(&fid,File Size (bytes)));
%put FSIZE=&F_SIZE;
手动,一切正常:F_SIZE=17342。
为什么 F_SIZE 在 运行 宁 STP 时没有初始化,我该如何解决?
提前致谢!
filename()
在具有 OPTION NOXCMD
的环境中受到限制,默认情况下为服务器环境设置。这是出于安全原因(因为 XCMD
允许 shell 访问)。您可以通过启用 OPTION XCMD
来启用它,尽管您的服务器管理员(如果这不是您)通常必须在服务器上而不是在您的本地会话中启用它。
有关详细信息,请参阅 the SAS documentation on XCMD。
我有 SAS 存储过程,它从 SAS 数据集 rr_udf_value 生成 DBF 文件并找到它的大小 (F_SIZE):
filename dbfout "/SASInside/DBF/myfile";
proc export
data=rr_udf_value
outfile=dbfout
dbms=dbf
replace;
run;
%let f_nm=/SASInside/DBF/myfile.DBF;
%let rc=%sysfunc(filename(onefile, &f_nm.));
%let fid=%sysfunc(fopen(&onefile));
%let F_SIZE=%sysfunc(finfo(&fid,File Size (bytes)));
%put &F_SIZE;
问题是变量 F_SIZE 在 STP 日志中为空。但是如果在执行 STP 之后我 运行 命令
%let f_nm=/SASInside/DBF/myfile.DBF;
%let rc=%sysfunc(filename(onefile, &f_nm.));
%let fid=%sysfunc(fopen(&onefile));
%let F_SIZE=%sysfunc(finfo(&fid,File Size (bytes)));
%put FSIZE=&F_SIZE;
手动,一切正常:F_SIZE=17342。
为什么 F_SIZE 在 运行 宁 STP 时没有初始化,我该如何解决?
提前致谢!
filename()
在具有 OPTION NOXCMD
的环境中受到限制,默认情况下为服务器环境设置。这是出于安全原因(因为 XCMD
允许 shell 访问)。您可以通过启用 OPTION XCMD
来启用它,尽管您的服务器管理员(如果这不是您)通常必须在服务器上而不是在您的本地会话中启用它。
有关详细信息,请参阅 the SAS documentation on XCMD。