首先,您调用的 SYMPUT 子例程不像您尝试使用它那样工作(ala Perl)。我建议阅读有关它的文档。
您在 SPACE 宏上遇到的错误是因为它在 DATA 步内。宏为您“编写” SAS 代码,因此&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 中的文件大小属性可能不同。运行第一部分以查看所有可用属性。然后相应地修改第二个。同样,您将需要添加调用以生成文件,就像您已经在做的那样。