SAS存储进程STP web:如何引用html文件作为文件\u webout而不是put语句?

SAS存储进程STP web:如何引用html文件作为文件\u webout而不是put语句?,sas,sas-stored-process,Sas,Sas Stored Process,因此,我看到了各种页面,它们通知SAS存储过程用户如何创建存储过程网页,如: 注意:在html文件中,如果有%DO循环之类的宏语句,则可能会出现“error:The%DO语句在开放代码中无效”之类的错误。为了解决该错误,我在html文件中围绕该语句添加了一个宏包装器,如下所示: <select class="formitem styleinput" name="EQMTID"> <option value=""></option> %macr

因此,我看到了各种页面,它们通知SAS存储过程用户如何创建存储过程网页,如:

注意:在html文件中,如果有%DO循环之类的宏语句,则可能会出现“error:The%DO语句在开放代码中无效”之类的错误。为了解决该错误,我在html文件中围绕该语句添加了一个宏包装器,如下所示:

<select class="formitem styleinput" name="EQMTID">       
<option value=""></option>

%macro doeqmt;

%do i = 1 %to &neqmtid;    
"<option value = %bquote(")%left(%trim(&&EQMTID&i))%bquote(") >&&EQMTID&i</option>"
%end;

%mend;
%doeqmt;

</select>

%宏观不确定性;
%i=1%至&neqmtid;
“&&EQMTID&i”
%结束;
%修补;
%没有;

根据您的具体情况,有几种方法可以做到这一点,但最简单的两种方法是将HTML读入数据步骤(在字符变量中,每行一个),然后再将其放回(如果需要对其执行一些修改,这会更好),或者正如Tom建议的那样,如果不需要对其进行太多修改,或者如果可以在原始HTML预文件中插入宏变量(或宏),则可以使用
PROC STREAM

PROC流非常简单。假设我有一个hello world类型的文件,位于c:\temp\helloworld.html中

<html>
  <header>
    <title>My Example Page</title>
  </header>
  <body>
    <h1> Hello, World </h1>
  </body>
</html>
现在我有了一个新文件,
stream.html
,具有相同的内容。并解决了其中的任何宏变量或宏

例如,让我们稍微修改一下:

输入:

<html>
  <header>
    <title>My Example Page</title>
  </header>
  <body>
    <h1> &mystring. </h1>
  </body>
</html>
请注意,它为我们解析宏变量


您可以将
输出文件
更改为
\u WEBOUT
,如果我没弄错的话,您应该会得到您想要的。

也许您只是想使用ODS HTML或ODS HTML5并将报告直接发送到_WEBOUT位置?也许您想使用
PROC STREAM
在替换宏触发器时处理外部HTML文件?这里确实需要更多信息。你在给韦伯写什么?PROC是什么意思?或者只是一些文字?这对答案有很大的影响。在网页上发布一个示例程序,说明您将要发布的内容。@Joe添加了更多详细信息。Tom-看起来Proc Stream可能是我可以使用的东西,因为它看起来确实解析了SAS代码。我将试用Proc Stream的一些尝试和错误。最好的管理方法是从您的网页开始。查看SASjs框架以获取示例:
<select class="formitem styleinput" name="EQMTID">       
<option value=""></option>

%macro doeqmt;

%do i = 1 %to &neqmtid;    
"<option value = %bquote(")%left(%trim(&&EQMTID&i))%bquote(") >&&EQMTID&i</option>"
%end;

%mend;
%doeqmt;

</select>
<html>
  <header>
    <title>My Example Page</title>
  </header>
  <body>
    <h1> Hello, World </h1>
  </body>
</html>
filename htmlfile "c:\temp\helloworld.html";
filename outfile  "c:\temp\stream.html";
proc stream outfile=outfile;
begin
&streamdelim readfile htmlfile;
;;;;
run;
<html>
  <header>
    <title>My Example Page</title>
  </header>
  <body>
    <h1> &mystring. </h1>
  </body>
</html>
filename htmlfile "c:\temp\helloworld.html";
filename outfile  "c:\temp\stream.html";

%let mystring = Hello, World;
proc stream outfile=outfile;
begin
&streamdelim readfile htmlfile;
;;;;
run;