如何在SAS中创建多个文件?

如何在SAS中创建多个文件?,sas,Sas,我正在尝试编写一个宏,它应该创建多个外部html文件。这是我的密码 %macro createFiles; %let name = Jupiter*Mercury*Venus; %let htmlTxt1 = <html><h1>Hello To ; %let htmlTxt2 = </h1></html> ; %let i = 1 ; %let thisName = %scan(&name., &i.,"*") ; %d

我正在尝试编写一个宏,它应该创建多个外部
html
文件。这是我的密码

%macro createFiles;
%let name = Jupiter*Mercury*Venus;
%let htmlTxt1 = <html><h1>Hello To ; 
%let htmlTxt2 = </h1></html>  ; 
%let i = 1 ; 
%let thisName = %scan(&name., &i.,"*") ; 
%do %while (&thisName. ne ) ; 

filename thisFile "C:\Users\owner\Desktop\&thisName.html";
call execute ('data  _null_; file &thisFile; put &htmlTxt1 || &thisName || &htmlTxt2; run; ') ;

%let i = %eval(&i + 1  )  ;
%let thisName = %scan(&name.,&i.,"*"); 
%end ;
%mend ; 

%createFiles 
%宏创建文件;
%让名字=木星*水星*金星;
%让htmlTxt1=你好到;
%设htmlTxt2=;
%设i=1;
%让thisName=%scan(&name.,&i.,“*”);
%执行%while(&thisName.ne);
文件名thisFile“C:\Users\owner\Desktop\&thisName.html”;
调用execute('data null_u; file&thisFile;put&htmlTxt1 | |&thisName |&htmlTxt2;run;');
%设i=%eval(&i+1);
%让thisName=%scan(&name.,&i.,“*”);
%结束;
%修补;
%创建文件
但是,它不起作用。请帮帮我


谢谢你,主要是打字错误和语法错误。SAS还有ODS HTML目的地,在我看来,它更容易用于创建HTML文件

%macro createFiles;
%let name = Jupiter*Mercury*Venus;
%let htmlTxt1 = <html><h1>Hello To ; 
%let htmlTxt2 = </h1></html>  ; 
%let i = 1 ; 
%let thisName = %scan(&name., &i.,"*") ; 
%do %while (&thisName. ne ) ; 

filename thisFile "C:\temp\&thisName..html";

data  _null_; 
file thisFile; 
put "&htmlTxt1 || &thisName || &htmlTxt2"; 
run; 

%let i = %eval(&i + 1  )  ;
%let thisName = %scan(&name.,&i.,"*"); 
%end ;
%mend ; 

%createFiles 
%宏创建文件;
%让名字=木星*水星*金星;
%让htmlTxt1=你好到;
%设htmlTxt2=;
%设i=1;
%让thisName=%scan(&name.,&i.,“*”);
%执行%while(&thisName.ne);
文件名thisFile“C:\temp\&thisName..html”;
数据为空;
把这个文件归档;
放置“&htmlTxt1 | |&thisName | |&htmlTxt2”;
跑
%设i=%eval(&i+1);
%让thisName=%scan(&name.,&i.,“*”);
%结束;
%修补;
%创建文件

我认为您将ts和name宏变量弄混了,因此从未创建过name。使用选项mprint运行它,这将有助于调试。也没有数据步骤。我认为您可能错误地混合了调用执行和宏代码。谢谢。我纠正了
ts
打字错误。我确信我遗漏了宏语法中的数据步骤。你能清楚地说明你正在尝试做什么,以及正在发生什么吗?你现在的问题太不清楚和/或太宽泛。Thanks无需调用execute,即在数据步骤内执行。而且,在put中的文本周围需要引号。%let thisName只需要一次,在%do%之后,删除之前的一个。+1谢谢。但它仍然不起作用。我照原样复制了代码。我还尝试将
文件thisFile
修改为
文件和thisFile
。没有创建任何文件,也没有错误thrownI打开了一个新的SAS实例,它成功了!我不知道为什么它在旧的会话中不起作用?谢谢你的回答!!!很高兴这项工作成功了,但是您应该真正研究ODS HTML来为您创建这些文件。