我使用封装在HTML中的变量动态构建一个非常长的String。 然后我使用ods HTML _webout创建一个包含信息的HTML页面。 我的问题是,当String超过4096个字符时,它会进行换行。如果此换行符位于HTML-Command中,则会破坏我的页面。当我使用LRECL时,它将值限制为4096,无论我在那里使用哪个值。 Sascode:
/*Some data generating and other stuff first which is not important here*/
...
/*then the output*/
data _null_;
set myData;
file _webout LRECL=32767;
put somedata;
/* somedata is like '<table><tr><td>someinformation</td> <td>moreinformation</td>...<td>lastinformation</td></tr></table>*/
run;
如果我查看页面的源代码,可能会发生类似:
<tr><td>Info1</td><td>1</td><td>C</td><td>$1.</td></tr>... ...<t
r><td>info80</td><td>10</td><td>C</td><td> </td></tr>
所以它在第4096个字符后断开并且没有正确地写入tr(或其他html代码,具体取决于Resultstring),这会导致显示输出错误。
我构建了一个解决方法,将输出字符串拆分为多个字符串,最大长度为4000,并将它们全部删除,但这不是一个很好的解决方案,有人可以给我一个如何解决这个更优雅的提示吗?
答案 0 :(得分:2)
好的,我找到了解决问题的方法,但我不理解;(
这取决于webout的给定编码值,因此我使用Sas 9.3和IE8进行的测试得出以下结果:
file _webout LRECL=32767;
limited result to 1024 characters per line
file _webout encoding=utf-8 LRECL=32767;
limited result to 4096 characters per line
file _webout encoding=ANY LRECL=32767;
no visible limitation in my test cases
因此,如果有人遇到同样的问题,他可以通过提供正确的编码值来使用解决方法。
但也许有人可以解释为什么输出线长度似乎只受编码值的影响,而不受lrecl语句的影响。
techsupport的回答是:
LRECL的工作原理如下,问题是浏览器规格,搜索浏览器选项,也许您可以激活或停用某些问题的解决方案。
我没有花时间寻找解决问题的浏览器选项,因为我们有许多不同的客户(大多数使用IE8)调用流程,我无法联系所有人并告诉他们如何更改浏览器< / p>
我的解决方法: 拆分较小部分的字符串或使用编码值。
答案 1 :(得分:1)
data _null_;
file _webout LRECL=32767;
put '<table><tr>';
do i =1 to 4000;
put '<td>' i 8. '</td>' @;
end;
put '</tr></table>';
run;