有沒有在Windows編譯SAS 9.1.3 SCL碼(注:不是普通的SAS代碼)的編程方法?我發現這樣做的唯一方法是使用SAS GUI:我們有一個Perl腳本,它向用戶界面發送擊鍵。雖然這可以工作(有點),但它很醜陋,容易出錯,而且太脆弱了,無法添加到我們的自動構建腳本中。編譯SAS SCL代碼編程
編輯:我原來的問題可能是有些不清楚。我知道proc build
;我的問題是首先將一些純文本作爲SCL條目放入SAS目錄中。
有沒有在Windows編譯SAS 9.1.3 SCL碼(注:不是普通的SAS代碼)的編程方法?我發現這樣做的唯一方法是使用SAS GUI:我們有一個Perl腳本,它向用戶界面發送擊鍵。雖然這可以工作(有點),但它很醜陋,容易出錯,而且太脆弱了,無法添加到我們的自動構建腳本中。編譯SAS SCL代碼編程
編輯:我原來的問題可能是有些不清楚。我知道proc build
;我的問題是首先將一些純文本作爲SCL條目放入SAS目錄中。
我發現這是一個先有雞還是先有蛋那樣的問題。我發現,這是唯一可能獲得的純文本到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進行編譯。
此外,您可以使用Eclipse和ESLink plugin檢出。它是專門爲此目的而設計的(將SCL代碼保存在用於版本控制的常規文件中,並具有編譯成目錄的功能)。