因此,我已经看到了许多页面,这些页面可以通知SAS存储过程用户创建存储过程网页的方式,例如:
data _null_;
file _webout;
put '';
put '
Hello World!';put '
';put '
Hello World!
';put '';
put '';
run;
put HTML语句是一种很好的方法,也是一种将HTML获取到页面的快速方法,但是我注意到使用put的HTML变得非常混乱且不可维护。
我该如何引用外部HTML文件呢? 我的确在HTML put语句中引用了一些SAS宏,因此我不确定它们是否会在外部html中解析,但是仍然有兴趣查看在存储过程中引用外部HTML文件的有效示例。
更新-我的示例程序
在这个放置HTML的程序中,我只是向网页写一个表单,并在下拉列表中填充一些数据。 我只是想从外部HTML文件中将其称为原始html,同时仍要像宏变量引用一样解析嵌入在HTML中的SAS代码。
%macro test;
proc sql;
create table eqmtid_name as
select distinct EQMT_ID
from library.joined_data;
%let neqmtid = &sqlobs;
quit;
data _null_;
set eqmtid_name;
suffix=put(_n_,8.);
call symput(cats('EQMTID',suffix), EQMT_ID);
run;
data _null_;
file _webout;
put '';
put '';
put '
';put '
put 'document.addEventListener("DOMContentLoaded", function initialize() {';
put ' var svgs = document.getElementsByTagName("svg");';
put ' for (i = 0; i < svgs.length; ++i) {';
put ' e = svgs[i];';
put ' e.removeAttribute("height");';
put ' e.removeAttribute("width");';
put ' e.setAttribute("width","80%");';
put ' }';
put ' ';
put '});';
put '';
put '';
put '
';put '';
put '
put '
';put '
';put '
put '
';put '
';put '
';put '';
put '
';put '';
put 'Show SAS Log
';
put '
put '
';put '
';put 'Equipment ID:';
put '
';put '
';put '' /
'' /
%do i = 1 %to &neqmtid; /
"&&EQMTID&i" /
%end; /
'';
put '
';put '
';put '
';
put '
put '
';put '
';put '
';
put '
';put '';
put '
';put '';
put '
';put '
';
put '
';put '
';put '
';put '
';put '';
put '';
run;
%mend;
%test;
已解决的更新
感谢下面概述的示例Joe,这是我必须编写代码才能使此工作...的SAS代码:
filename htmlfile "/sasdata/IT/APP/file.html";
proc stream outfile=_webout;
begin
&streamdelim; %include htmlfile;
;;;;
run;
注意:在html文件中,如果您有宏语句(如%DO循环),则可能会收到诸如“错误:%DO语句在开放代码中无效”之类的错误。 为了解决该错误,我在该语句周围的html文件中添加了一个宏包装,如下所示:
%macro doeqmt;
%do i = 1 %to &neqmtid;
"&&EQMTID&i"
%end;
%mend;
%doeqmt;