SAS Enterprise Guideをいちいち開くのが面倒
SASで記述された定例の処理を実行するのが面倒だなと思い、調べていたところ次の内容を見つけました。
ここで記述されているのは、Visual Basicの様子なので、PowerShellでComObjectを利用して、実行できる様にしてみました。
コード
**[ほにゃらら]**の部分を自分の環境やファイルに合わせて使用します。
# https://blogs.sas.com/content/sasdummy/2011/05/03/using-sas-enterprise-guide-to-run-programs-in-batch/
$sasApp = New-Object -ComObject "SASEGObjectModel.Application.[VERSION]"
# プロファイル: [PROFILE NAME]を設定する。Local Serverの場合は"Null Provider"
$sasApp.SetActiveProfile("[PROFILE NAME]")
# 出力の設定
$sasApp.GenListing = $True
$sasApp.GenSasReport = $False
$sasApp.GenHTML = $False
# 新規プロジェクト
$project = $sasApp.New()
# 新規プロジェクトにコードを追加する
$sasProgram = $project.CodeCollection.Add()
# SAS Server名: [SAS SERVER]を設定する
$sasProgram.Server = "[SAS SERVER]"
# [PROGRAM FILE PATH]に用意したSASのプログラムをGet-Contentで読み込み
# $sasProgramのTextに渡す
$text = Get-Content "[PROGRAM FILE PATH]"
$sasProgram.Text = $text
# Codeを実行する
$sasProgram.Run()
# [LOG FILE PATH]にSASのログを出力する
$logFileName = "[LOG FILE PATH]"
$sasProgram.Log.SaveAs($logFileName)
# SAS EGを終了する。
$sasApp.Quit()