运行SAS程序的指定行

时间:2016-03-28 15:37:42

标签: sas

假设我有这个程序:

1 data temp;
2   set _null_;
3 run;
4 
5 %put Hello world;

我希望为它添加两行,一行运行程序的第1-3行,另一行运行第5行。

第二个例子enter image description here表明%include可能是我正在寻找的,但%包含1-3而%include 5不起作用。 %include [path] 1-3让我陷入无限循环,这是不可取的。

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

3 个答案:

答案 0 :(得分:3)

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

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

public class post {
    public Post(long time, String name, String content) {
        super();
        this.time = time;
        this.name = name;
        this.content = content;
    }

    public String name;
    public String content;
    public long time;

    public String getName() {
        return name;
    }

    public String getContent() {
        return content;
    }

    public long getTime() {
        return time;
    }
}

enter image description here

答案 1 :(得分:0)

Macros,也许?

%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页开头的示例: First & Ronk, SGI 130-30, SAS® Macro Variables and Simple Macro Programs

答案 2 :(得分:0)

一个额外的回报可能搞砸你的行引用...如果你需要在某个地方添加一个标题或一行代码,或者你愿意回去修复你所有的行号参考?

我建议使用macro%include选项。

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

%mend;

%repeat_code

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

根据这些线路的实际情况,您可能还有其他选择。例如,如果它是查找或重新编码变量,我将使用格式。