2013年11月5日火曜日

Calls a specific routine or module that resides in an external dynamic link library (DLL).

SASからWindowsのAPIを呼び出す方法を整理しています。
その理由を列挙しますと

  • SASのバージョンアップの作業で、Xステートメントが規制されている
  • SASデータセットをCOPYプロシージャで移行するとタイムスタンプが維持できない
  • タイムスタンプが変わると元ファイルが更新されたときに再転送が必要かわからない
  • DOS窓からの実行だと遅い

VBScriptから制御する手もありますが、古いデータセットから順に移行したり、停止の制御を考えるとSAS1本でやるのが良さそうです。

基本はDLLを呼び出すためのI/Fを"The SASCBTBL Attribute Table"で定義して、MODULE関数で呼び出します。この仕組みが繊細で、定義を間違えるとSAS.EXEが落ちます。WinAPIの型を調べて、変数を割り当てるのは面倒な作業です。

0 件のコメント :

コメントを投稿