运行SAS程序的指定行

运行SAS程序的指定行,sas,Sas,假设我有这个程序: 1 data temp; 2 set _null_; 3 run; 4 5 %put Hello world; 我想给它添加两行,一行运行程序的第1-3行,另一行运行程序的第5行 第二个例子表明%include可能是我想要的,但是%include 1-3和%include 5不起作用include[path]1-3使我陷入无限循环,这是不可取的 实现这一目标的最佳方式是什么?谢谢 编辑:这仅适用于以前提交的行 你需要线轴选项。我使用RESETLINE语句来重置使用SA

假设我有这个程序:

1 data temp;
2   set _null_;
3 run;
4 
5 %put Hello world;
我想给它添加两行,一行运行程序的第1-3行,另一行运行程序的第5行

第二个例子表明%include可能是我想要的,但是%include 1-3和%include 5不起作用include[path]1-3使我陷入无限循环,这是不可取的


实现这一目标的最佳方式是什么?谢谢

编辑:这仅适用于以前提交的行

你需要线轴选项。我使用RESETLINE语句来重置使用SAS/EG时有用的行号。我想知道您打算如何使用它

options spool=1;
resetline;
data temp;
   set _null_;
   run;

%put Hello world;

%include 1-3 / source2;
%include 5 / source2;

编辑:这仅适用于以前提交的行

你需要线轴选项。我使用RESETLINE语句来重置使用SAS/EG时有用的行号。我想知道您打算如何使用它

options spool=1;
resetline;
data temp;
   set _null_;
   run;

%put Hello world;

%include 1-3 / source2;
%include 5 / source2;
也许是宏

%macro one(datasetname= );
data &datasetname;
set _null_;
run;
%mend one;

%macro two(textstring= ); 
%put &textstring;
%mend two;

%one(datasetname= temp1);
%two(textstring= Hello world);

%one(datasetname= temp2);
%two(textstring= Hello new world);
您可以将宏变量从一个数据集而不是多个宏调用馈送到流程中。参见第11页开始的示例: 也许是宏

%macro one(datasetname= );
data &datasetname;
set _null_;
run;
%mend one;

%macro two(textstring= ); 
%put &textstring;
%mend two;

%one(datasetname= temp1);
%two(textstring= Hello world);

%one(datasetname= temp2);
%two(textstring= Hello new world);
您可以将宏变量从一个数据集而不是多个宏调用馈送到流程中。参见第11页开始的示例:

如果你需要添加一个标题,或者在某个地方添加一行新的代码,或者其他什么东西,你愿意返回并修复所有行号引用吗

我建议使用
%include
选项

%macro repeat_code();
     ***sas code goes here;

%mend;

%repeat_code
对于
%include
,您可以在新文件中创建行,然后使用
%include
在代码中引用它们


根据这些行实际执行的操作,您可能有其他选项。例如,如果它是一个查找或重新编码一个变量,我会使用一种格式

一次额外的返回可能会破坏你的行号引用……如果你需要在某处添加一个标题或一行新代码,或者其他什么东西,你愿意返回并修复所有行号引用吗

我建议使用
%include
选项

%macro repeat_code();
     ***sas code goes here;

%mend;

%repeat_code
对于
%include
,您可以在新文件中创建行,然后使用
%include
在代码中引用它们


根据这些行实际执行的操作,您可能有其他选项。例如,如果它是一个查找或重新编码一个变量,我会使用一种格式

%include通常引用外部文件。我不确定有没有办法做你想做的事。你能解释一下这个用例吗?有一大块代码我需要重新运行几次,我正在寻找一种比突出显示所有内容更简单的运行方式(循环在这个场景中不起作用)。我可以想象这还有其他用途,但这是我的意图。%include通常引用外部文件。我不确定有没有办法做你想做的事。你能解释一下这个用例吗?有一大块代码我需要重新运行几次,我正在寻找一种比突出显示所有内容更简单的运行方式(循环在这个场景中不起作用)。我可以想象这还有其他用途,但这是我的意图。resetline语句-很好!啊,好吧,也许这只是一个SAS EG功能。知道能不能为基本SAS解决一些问题吗?@多余的是,基本SAS是成批运行的。他只是一个提交者。我提到EG的原因是因为它提交了几行代码,这就是为什么我使用resetline.resetline语句的原因-很好!啊,好吧,也许这只是一个SAS EG功能。知道能不能为基本SAS解决一些问题吗?@多余的是,基本SAS是成批运行的。他只是一个提交者。我提到EG的原因是因为它提交了几行代码,这就是我为什么要重置代码行的原因。