gpt4 book ai didi

sas - 以编程方式编译 SAS SCL 代码

转载 作者:行者123 更新时间:2023-12-04 03:20:34 25 4
gpt4 key购买 nike

是否有在 Windows 中编译 SAS 9.1.3 SCL 代码(注意不是普通的 SAS 代码)的编程方式?我发现这样做的唯一方法是使用 SAS GUI:我们有一个 Perl 脚本,可以将击键发送到 UI。虽然这(某种程度上)有效,但它很丑陋且容易出错,而且太脆弱而无法添加到我们的自动构建脚本中。

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

最佳答案

我发现这是一个先有鸡还是先有蛋的问题。我发现只有使用已经存在的 SCL 条目才能将纯文本放入 SCL 条目中...

我有一个设置,我可以在纯文本文件中读写目录条目中的 SCL 代码。我将其用于修订控制目的 (CVS)。

虽然 CVS 主要用于纯文本代码,但它也可以处理二进制文件。因此,我制作了一个 SCL 条目(称为 FILE2SCL),它可以将纯文本导入其他 SCL 条目。然后,我将此 SCL 条目 PROC CPORT 转换为二进制文件,并将其 checkin 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编译它了。

关于sas - 以编程方式编译 SAS SCL 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com