2009-04-28 42 views
2

有没有在Windows编译SAS 9.1.3 SCL码(注:不是普通的SAS代码)的编程方法?我发现这样做的唯一方法是使用SAS GUI:我们有一个Perl脚本,它向用户界面发送击键。虽然这可以工作(有点),但它很丑陋,容易出错,而且太脆弱了,无法添加到我们的自动构建脚本中。编译SAS SCL代码编程

编辑:我原来的问题可能是有些不清楚。我知道proc build;我的问题是首先将一些纯文本作为SCL条目放入SAS目录中。

回答

4

我发现这是一个先有鸡还是先有蛋那样的问题。我发现,这是唯一可能获得的纯文本到SCL项,通过使用已经存在的SCL条目...

我有一个设置,在那里我阅读和目录条目编写SCL代码,往返于平原文本文件。我将其用于版本控制目的(CVS)。

尽管CVS主要用于纯文本代码,它也可以处理二进制文件。因此我创建了一个SCL条目(称为FILE2SCL),它可以将纯文本导入其他SCL条目。然后我将PROC SCORT输入到一个二进制文件中,并将其检入到CVS中。

这样,我总是可以以编程方式从CPORT文件中获取此SCL条目,并使用此SCL条目将SCL代码从纯文本导入到其他SCL条目中。之后我可以使用PROC BUILD来编译SCL条目,就像你提到自己一样。

我FILE2SCL条目看起来是这样的:

INIT: 
    /***************************************************************/ 
    /*                */ 
    /* Call this SCL like this:         */ 
    /* %let srcFile=D:\work\dummy.scl;        */ 
    /* %let dstEntry=WORK.NEW.DUMMY.SCL;       */ 
    /* proc display catalog=work.cat.file2scl.scl;     */ 
    /* run;              */ 
    /*                */ 
    /***************************************************************/ 

    length Rc   8; 
    length theFile $ 200; 
    length theEntry $ 128; 

    theFile=symget('SRCFILE'); * Source file *; 
    theEntry=symget('DSTENTRY'); * Destination entry *; 

    * Assign filename *; 
    Rc=filename('temp',theFile); 

    * Include external file into preview buffer *; 
    Rc=PREVIEW('INCLUDE','temp'); 
    * Save contents of preview buffer to SCL entry *; 
    Rc=PREVIEW('SAVE',theEntry); 
    Rc=PREVIEW('CLEAR'); 
    Rc=PREVIEW('CLOSE'); 

    * Deassign filename *; 
    Rc=filename('temp',''); 
return; 

的注释说明如何使用它: 与设置SAS宏变量,“SRCFILE”,包含对您的SCL源代码文件的路径开始,和另一个宏变量“dstEntry”来包含您希望SCL条目所在的入口路径。然后PROC DISPLAY FILE2SCL条目,它会将您的SCL源代码导入到指定的SCL条目中,然后您可以使用PROC BUILD进行编译。

0

此外,您可以使用EclipseESLink plugin检出。它是专门为此目的而设计的(将SCL代码保存在用于版本控制的常规文件中,并具有编译成目录的功能)。