InfraPodIPチェックオンラインツールサイトマップ本サイトはプロモーションを含みます。Termのバージョンに縛られる事があります。Termのバージョンが決められていて、自分の権限でバージョンアップする事が許されない、という事はよくあります。Termのバージョンに縛られる環境下で注意したい事についてまとめます。Termはバージョンが上がると使えるTTLコマンドが増えたり仕様が変わる事があります。いったバージョンの差異を吸収するためには、マクロを実行した際にgetverでバージョンを調べる必要があります。Termマクロを作成する場合、トラブルを未然に防ぐために次の選択を最初に行うことをオススメします。ある特定のバージョンに満たない場合はエラーを通知してマクロの実行を中止する。バージョンによって挙動を変えるようにコーディングする(要4.58以降)。特定のバージョン以上のみ動作保証の対象とする(getverが使える4.58以降など)。最新バージョン以外は動作保証の対象外とする。4.58以降が必要です。注意するバージョン新しいバージョンなら何でも良いというわけではありません。最近(2016年)のリリースですと、4.90に注意する必要があります。このバージョンは正しくないif文をエラーにするように仕様変更が加えられました。ところが、これにはバグがあって、ある条件では正しいif文でもエラーになってしまいます。4.90は避けた方が良いと思います。今まで問題なく動いていたマクロが動かなくなる可能性があります。then」のようにthenを常に使うようにする事をオススメします。詳細は「if分でバグを仕込まないための注意点」を参照してください。各バージョンでの注意すべて挙げるとキリが無いので、ぼくが業務マクロを書く際にハマったものやよく使うであろうTTLコマンドについて取り上げます。waitregexが4.20以下では使えないwaitは待ち受け文字列が固定文字列なので柔軟性がありません。汎用性があるマクロを書くためには、どうしても正規表現が使えるwaitregexが必要です。動作保証バージョンを4.21以上とするか、それが出来なければ動的に待ち受け文字列を生成してwaitを使うか、汎用性については諦めるしかありません。breakが4.52以下では使えないbreakはループから抜けるためのTTLコマンドです。breakが使えない場合はgotoで抜けるしかありません。4.52以下を動作保証とする場合は、最初からbreakを使わずbreakで抜ける先にラベルを書いておいて、gotoで飛ばすようにする必要があります。continueが4.76以下では使えないcontinueはループの先頭に戻るためのTTLコマンドです。continueが使えない場合、breakと同じ要領でgotoでループの先頭に飛ばすしかありません。4.76以下を動作保証とする場合は、最初からcontinueを使わずループの先頭にラベルを書いておいて、gotoで飛ばすようにする必要があります。enduntilが4.55以下では使えないある程度プログラミングの経験がある人はwhileの他にdo,whileやuntil,enduntilを使う機会が多いと思うのですが、これらは4.56以降でないと使えません。4.55以下を動作保証とする場合は、whileだけでコーディングする必要があります。listboxが4.77以下では使えないぼくはlistboxを接続先を選択させるために使う事が多いのですが、listboxは4.78以降でないと使えません。4.77以下を動作保証とする場合は、残念ですがlistboxは代替手段がないので、使う事は諦めてください。Termマクロに引数で渡す事ができるパラメータの数が8個までと仕様で決まっていました。4.92以降ではparams配列が使えるようになったため、この制限がなくなりました。4.92リリース」を参照してください。4.92リリースstrspecialが4.66以下では使えないmessageboxやyesnoboxなど文字列を表示する際に改行(¥n)やタブ(¥t)を制御文字として扱う方法はふたつあります。ひとつ目はmessageboxやyesnoboxのstrspecialオプションを使う、ふたつ目はstrspecialコマンドで制御文字を変換する方法です。4.66以下を動作保証とする場合は、strspecialコマンドを使わずにstrspecialオプションを使う必要があります。logopenの仕様とオプションlogopenはバージョンによって使えるオプションや仕様変更が比較的多いTTLコマンドです。flagオプションが追加された。flagオプションとtimestampオプションが無効化されるようになった。4.62での仕様変更logopenが成功したか否か、resultへ結果を格納するようになった。4.61までは本当にログファイルを開く事ができたのか判断できません。そのためlogopenを実行した後、ログファイルの存在を確認する必要があります。4.62以上の場合、logopenを実行した後にresultの値を調べて、そうでなければファイルの存在を調べる、という方法か、もしくはresultは調べず常にファイルの存在を調べる、という方法のどちらかを選択する必要があります。ファイルの存在確認については下記の記事を参照してください。bufferオプションが追加された。Termのバージョンを使う人と事前に合意しておく事をオススメします。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。