これは鶏が先か卵が先かという問題だと思いました。既存のSCLエントリを使用することによってのみ、プレーンテキストをSCLエントリに取り込むことができることがわかりました...
プレーンテキストファイルとの間で、カタログエントリのSCLコードを読み書きする設定があります。私はこれをリビジョン管理目的(CVS)に使用します。
CVSは主にプレーンテキストコードに使用されますが、バイナリファイルも処理できます。したがって、プレーンテキストを他のSCLエントリにインポートできるSCLエントリ(FILE2SCLと呼ばれる)を作成しました。次に、このSCLエントリをバイナリファイルにPROC CPORTし、CVSにチェックインしました。
このようにして、いつでもプログラムでこのSCLエントリをCPORTファイルからフェッチし、このSCLエントリを使用して、プレーンテキストから他のSCLエントリにSCLコードをインポートできます。その後、あなたが自分で言ったように、PROCBUILDを使用して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エントリにインポートされ、その後、PROCBUILDを使用してコンパイルできます。