Tera Termのマクロの話

わけあって、Excelスプレッドシートに設定を書き込み、VBAからTera Termマクロを呼び出してDBの内容をcsvに出力させ、さらにWinSCPを呼び出してローカルに持ってきて、さらにExcelに読み込む、ということをやってました。

で、基本的な動きをttlファイルに書いて、引数として渡す、ということをやるんですが、ここに問題が。

(1)ttpmacro.exeは9個までしか引数を取れない(ちなみに第1引数はttlファイルのパス)

今回はいっぺんに大量のSQL文を実行したいので、引数を1個ずつ渡してparamcntで個数を調べて…ということはできない。

ので、適当な文字でつなげてstrsplitで1個ずつに分けるのはどうか、というと、

(2)strsplitは9個までしか割れない

というわけで、「strsplitで最初のSQL文を取り出し、文字数を数えて頭からその文字数+区切り文字を取り除く」を残らなくなるまで繰り返す、という方法に。

しかしここでぶち当たったのが次の問題。

(3)引数の文字数の上限

実際にたくさんつながったSQL文を食わせてみると、途中までしか認識されない。サクラエディタで文字数を数えてみると512文字っぽい。

ということで、「500文字を超えそうなら次の引数に回す」ということで必要なレベルではうまくいくようになりました。ちゃんちゃん。

でも512文字が上限ってどこにも書いてないし、実はコマンドラインの制限でOS依存だったり…大丈夫かなあ。