ちょっとしたスクリプト

ちょっとした、本当に小さなツールを作ることを要求されたとする。仕様は、次の通り。

  • 1時間に一度動作する
  • DB(神託)に接続してある条件で検索する
  • 検索結果のcount(*)を取る
  • 検索結果のカラムをイベントログに出力する

ふんふん、なるほどな、こんなもんはWSHでサクッと書けばいいじゃん。
と、次のように書いてみた


var sh = WScript.CreateObject("WScript.Shell");
while(end_condition()){
WScript.Sleep(60 * 60 * 1000); //1時間のミリ秒表記
var sql = "select col1,col2 from tname";
dbconnect(sql);
}
function end_condition()
{
if(ほにゃらら){
return true; // この条件だと終了しないぞ
}else{
return false; // この条件だと終了するぞ
}
}
function dbconnect(sql)
{
// 神託に接続して、sqlを実行して、切断して、結果を返す関数
// あまり深く考えずCOM経由でoo4o接続で書いてある。
}
で、顧客に持っていったら、えらく好評だった、らしく、新しい要望をもらってきた。
そうか、ふんふん、ここを、こうすりゃできるよな。
と、dbconnectの処理を追加した。
そして、顧客に持っていったら、さらに公表だったらしく、さらに別の要望をもらってきてしまった。
そうして、曜日別に、時間ごとに実行するSQLが異なる、さらに休日も意識する強烈なスクリプトができた。
気がついたらJScriptで1500行以上書いていた。。。関数の数が28。。。。
と、この辺に来て、JScript(というか、javascript)のfunctionキーワードでクラスを表現する文法に不満が出てきた。。
全部1つのファイルに書いたので、エディタで関数を探すのが面倒なのだ。
WSFにしてxmlの中に入れればJScriptをインクルードできるのは知ってるのだが、
別ファイルにすると、もっと関数を探すのが面倒だよな。。
どうしたものか。
(e_c_e_tが使ってるxyzzyのjs-modeだとタグジャンプがうまく使えないのだ)