3

WindowsでSAS 9.1.3 SCLコード(NBは通常のSASコードではない)をプログラムでコンパイルする方法はありますか? 私が見つけた唯一の方法は、SAS GUI を使用することです。キーストロークを UI に送信する Perl スクリプトがあります。これは (ある程度) 機能しますが、醜く、エラーが発生しやすく、脆弱すぎて自動ビルド スクリプトに追加できません。

編集:私の最初の質問はおそらくやや不明確でした。私は知っていproc buildます; 私の問題は、最初にSCLエントリとしてSASカタログにプレーンテキストを取得することです。

4

2 に答える 2

4

これは鶏が先か卵が先かという問題だと思いました。既存の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を使用してコンパイルできます。

于 2009-04-29T10:52:50.560 に答える
0

また、 EclipseESLinkプラグインを使用してチェックアウトできる可能性もあります。これは、この目的のために特別に設計されました(カタログにコンパイルする機能を備えたバージョン管理のために、SCLコードを通常のファイルに保持します)。

于 2009-05-11T15:21:26.070 に答える