我想在AIX中获取csv文件的文件大小,并使用以下X和Call System Command来完成。问题是我无法在宏变量中获得“文件大小”,我将在稍后的程序中使用它。
data _null_;
call system('du -g p_bhj_c_hh100uk01po1.csv');
call symput('space','X du -g p_bhj_c_hh100uk01po1.csv');
%put &space;
run;
WARNING: Apparent symbolic reference SPACE not resolved.
答案 0 :(得分:2)
首先,您调用的SYMPUT子例程不会像您尝试使用它一样工作(ala Perl)。我建议阅读相关文档。
您在SPACE宏上获得的错误是因为它在DATA步骤中。宏为您“编写”SAS代码,因此在执行DATA步骤之前,&SPACE
宏正在尝试解析。
以下是执行所需操作的代码示例:
data _null_;
rc = filename("ref","e:\temp\reg.pdf");
fid = fopen("ref");
infonum = foptnum(fid);
do i=1 to infonum;
infoname = foptname(fid,i);
infoval=finfo(fid,infoname);
put infoname= infoval=;
end;
close = fclose(fid);
run;
/*In Windows, attribute is "File Size (bytes)"*/
data _null_;
rc = filename("ref","e:\temp\reg.pdf");
fid = fopen("ref");
size=finfo(fid,"File Size (bytes)");
call symput("size",size);
close = fclose(fid);
run;
%put &size;
AIX中的文件大小属性可能不同。运行第一部分以查看所有可用属性。然后相应地修改第二个。同样,您需要添加调用以生成您正在执行的文件。