SAS:获取已创建的DBF文件的文件大小

时间:2015-06-11 16:25:52

标签: stored-procedures sas sas-macro

我有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;

问题是STP日志中变量F_SIZE为空。但是如果执行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。

为什么在运行STP时未初始化F_SIZE,我该如何解决?

提前致谢!

1 个答案:

答案 0 :(得分:2)

Get-ADComputer -Filter "ManagedBy -eq ""$item""" filename()的环境中受到限制,默认设置为服务器环境。这是出于安全原因(因为OPTION NOXCMD允许shell访问)。您可以通过启用XCMD启用此功能,但您的服务器管理员(如果不是您)必须在服务器上启用它,而不是通常在本地会话中启用它。

有关详细信息,请参阅the SAS documentation on XCMD