我在使用VB脚本在SAS EG中将rtf转换为pdf时遇到问题。以前它是在Base SAS服务器下工作的。
我使用proc选项查看默认情况下是否打开了nocmd,但是似乎X命令已启用。
Optional
下面是我使用的系统。
proc options option=noxcmd define value;
run;
Option Definition Information for SAS Option XCMD
Group= ENVDISPLAY
Group Description: Windows and data display information
Description: Enables the X command in SAS.
Type: The option value is of type BOOLEAN
When Can Set: Session startup (command line or config) only
Restricted: Your Site Administrator can restrict modification of this option
Optsave: PROC Optsave or command Dmoptsave will not save this option NOTE: PROCEDURE OPTIONS used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
%macro vbs_pdf(rtfname=,pdfname=);
data _null_;
length vbscmd $ 400;
file "temp.vbs";
put 'Dim ObjWord';
put 'set objWord = CreateObject("Word.Application")';
put 'objWord.Visible = True';
vbscmd='objWord.Documents.Open("'|| "&rtfname" ||'")';
put vbscmd;
vbscmd='objWord.ActiveDocument.SaveAs "'||"&pdfname"||'", 17';
put vbscmd;
put 'objWord.ActiveDocument.Close(False)';
put 'objWord.Application.Quit(False)';
run;options noxwait;
data _null_;
command="START /WAIT CScript temp.vbs //NoLogo";
call system(command);
command2="DEL temp.vbs ";
call system(command2);
run;
%mend;
options noxwait;
%vbs_pdf(rtfname=\\cifs\...\sample1.rtf,
pdfname=\\cifs\...\sample1.pdf);
我没有在SAS EG中看到任何X命令执行。有人知道如何使这项工作吗?
答案 0 :(得分:0)
不确定是否会有所帮助,但我想使用PIPE引擎允许SAS程序捕获任何操作系统消息。
data _null_;
length command $200;
do command="START /WAIT CScript temp.vbs //NoLogo","DEL temp.vbs";
put command=;
infile cmd pipe filevar=command end=eof;
do while (not eof);
input;
put _infile_;
end;
end;
run;
还请确保当前工作目录是您可以写入temp.vbs文件的位置。否则,请为文件使用完全限定的名称,以便可以在您具有写访问权的位置创建文件。
不确定您为什么在这里使用START吗?为什么不直接调用cscript?您也可以尝试将错误消息的重定向添加到标准输出到命令的末尾。
data _null_;
length command $200;
do command="cScript temp.vbs 2>&1","DEL temp.vbs 2>&1";
put command=;
infile cmd pipe filevar=command end=eof;
do while (not eof);
input;
put _infile_;
end;
end;
run;