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依存だったり…大丈夫かなあ。