見出し画像

Tera Termマクロのこれだけは覚えておきたい!超入門

これからTera Termマクロを作成してみようという方のために、最低限これだけ覚えておけば何とかなる、というものをまとめてみました。

Tera Termヘルプ

Tera Termがインストールされたフォルダにteratermj.chmというヘルプファイルが用意されています。このファイルにはTera Termマクロの使い方やTTLコマンドの詳細も記載されているので、ぜひ一度読んでみて下さい。

ファイルの場所はインストール方法によって異なりますが、通常は「C:\Program Files (x86)\teraterm5」配下にあるはずです。

コメント

Tera Termマクロ内にコメントを入れておくと、後から読み返したときに処理内容がすぐに分かります。他の人がマクロを読んだときもコメントがあると理解しやすくなりますので、コメントは積極的に入れておきましょう。

Tera Termマクロで使えるコメントは行の先頭に「;(セミコロン)」を付けます。コメントは行末まで有効で、先頭に;(セミコロン)を付けた行はコメントとみなされます。

; この行はコメント扱い

また、C言語風に/* ... */を使う事もできます。この方法は広い範囲をコメントアウトするには良い方法です。

/* ここはコメント扱い */

/*
  ここも
  コメント扱い
 */

メッセージボックスを表示する

画面にメッセージボックスを表示してユーザーに情報を伝えたり、デバッグ目的で変数の値を表示させたい場面は多々あります。メッセージボックスを使うためには、TTLコマンドの「messagebox」を使います。

messagebox <message> <title> [<special>]

messageには表示したいメッセージ、titleにはメッセージボックのタイトル部分に表示される文字列を指定します。specialはオプションで、指定しなくても構いません。このオプションは特殊文字の扱いを制御するものです。

specialが0でない場合は次の文字を特殊文字として扱います。

  • \\ → \

  • \n → 改行

  • \t → タブ

specialの初期値は「0」なので「\\」や「\n」、「\t」はそのまま表示されます。

specialを指定しない or 0に指定した場合

specialを指定しない場合や明示的に0に設定した場合は特殊文字がそのまま表示されます。

messagebox "こんにちは\nこんにちは" "こんにちは" 0
改行されず、ぞのまま表示される

specialを0以外に設定した場合

specialを0以外に設定すると特殊文字を特殊文字として扱われます。そのためメッセージボックス内で改行させたい場合などはspecialを1など0でない値に設定します。

messagebox "こんにちは\nこんにちは" "こんにちは" 1
\nによって改行される

システム変数と自由に使える変数

変数というのは、データを入れるための箱だと思ってください。変数には数値や文字列を入れることができます。文字列を入れる場合は「’(シングルクォート)」か「"(ダブルクォート)」でくくります。たとえば、1は数字の1ですが'1'とすると文字列の1として解釈されます。また、abcとすると変数のabcと解釈され、'abc'とすると文字列のabcと解釈されます。

;変数xに数字の1を入れる
x = 1

;変数xに文字列の1を入れる
x = '1'

システム変数

Tera Termマクロにはシステム変数といってTera Termに最初から用意されている変数があります。変数を作成する際は、システム変数と被らないように気をつける必要あります。代表的なシステム変数をいくつか紹介します。

inputstr

受信内容やユーザーがinputboxなどで入力した内容が格納されます。

result

TTLコマンドのリターンコード(実行結果)が格納されます。resultを参照する事でTTLコマンドが成功したのか判定する事ができます。ただし、resultに実行結果を格納するTTLコマンドは一部に留まるので、詳しくはTera Termマニュアルを参照してください。

timeout

タイムアウトまでの秒数です。初期値は0となっていて、0の場合はタイムアウトが発生しません。waitのように受信結果を待つTTLコマンドで使用されます。

mtimeout

タイムアウトまでのミリ秒数です。waitのように受信結果を待つTTLコマンドで使用されます。

比較演算子

比較演算子とは「xとyは同じ」「xとyは違う」「xはyよりも大きい」「xはyよりも小さい」という風に比較するためのものです。

xとyが同じなのか違うのか比較するためには以下のように書きます。

;xとyは同じ
x == y

;xとyは違う
x != y

また、xがyよりも大きいのか、小さいのか比較するためには以下のように書きます。

;xはyよりも大きい
x > y

;xはyよりも小さい
x < y

条件分岐

条件分岐というのは「もしも〜だったら」という風に条件によって処理を変えるものです。TeraTermマクロではifを使用します。

if x == 1 then
    ;xが1の場合の処理
endif

もっと複雑に「もしも〜だったら、そうでなければ」とするにはelseを使います。

if x == 1 then
    ;xが1の場合の処理
else
    ;xが1でない場合の処理
endif

もっと複雑に「もしも〜だったら、そうでなく〜だったら、どちらも違ったら」とするにはelseifを使います。

if x == 1 then
    ;xが1の場合の処理
elseif x == 2 then
    ;xが2の場合の処理
else
    ;xが1でも2でもない場合の処理
endif

ループ処理

特定の処理を繰り返したい時はループ処理を使います。ループ処理を使うことによってコードがスッキリと見やすくなります。

同じ事をN回繰り返したい

forを使うと回数を指定してループさせることができます。

for 変数 開始値 終了値
   ; 処理
next

開始値で指定した値から1つずつ増加していき終了値になるまで繰り返します。変数には現在の値が格納されているので、繰り返しの何回目なのか判断できます。

次のマクロを実行すると3回メッセージボックスが表示されます。

for i 1 3
    messagebox i i
next

開始値が終了値よりも大きい場合は開始値から減算しながらループします。

for i 3 1
    messagebox i i
next

また、forでなく「do while」を使ってループさせることもできます。

i = 3
do while i > 0
    ;iの値を1減らす
    i = i - 1
    ;ここに処理を書く
loop

ループ処理は用途によって色々な書き方があるので、詳しく知りたい方はTera Termヘルプを参照してください。

この記事が気に入ったらサポートをしてみませんか?