6.2.1. while文の基本
前回はforを使ったループについて書いてみました。
forでは、初期値を設定して、「最後の値」までの回数を繰り返すという方式でループしていました。
今回はTera Termマクロにおけるもう一つのメジャーなループである、whileを使ってみます。
6.2.1.1. whileの説明
whileでは、whileで指定した値が0以外である場合に、endwhileとの間でループを繰り返すというコマンドです。
whileを使っても、forと同様なループを書くことができます。
whileの場合は、ループをさせる場合の行数が長くなってしまいますが、文法がシンプルである分、書きやすいと感じるかもしれません。
6.2.1.2. whileの書き方
whileのコマンドは以下のような構文で記述します。
1 2 3 |
while 値 何かのコマンド endwhile |
このコマンドでは、「値」が0以外の場合に、endwhileとの間に書かれた「何かのコマンド」を繰り返し続けるということになります。
6.2.2. while文のサンプル
それでは、forの時と同じように、10回空Enterを繰り返すマクロをサンプルで書いてみましょう。
6.2.2.1. whileで空Enterを10回繰り返す
whileコマンドでは、構文の中に初期値を設定する場所がありませんので、while文の前に値を変数宣言しておく必要があります。
1 2 3 4 5 |
i = 10 ;iの初期値を変数宣言する while i ;whileでi(10)を設定する sendln '' ;空Enterを実施 i = i-1 ;iにi-1を代入する(i=10-1)この時点でiは9 endwhile ;whileに戻る |
このマクロでは、iの値が0になるまでループが繰り返され、0になれば、マクロが終了するということになります。
6.2.2.2. whileとforの違い
whileコマンドとforコマンドで同様のループを作れるのだとすれば、その二つの使い道に悩んでしまいそうなところです。
結論としては、使いやすい方を使うという形でいいと思います。
ただ、whileの場合は、意図的にストップするまでループするというマクロを作るのが非常に簡単です。
実際の現場では、コンソールログを表示させるような目的で、定期的に空Enterを叩くようなマクロがあると非常に便利です。
以下が永遠に空Enterを叩き続けるマクロのサンプルです。
1 2 3 4 |
while 1 ;whileの値で1を指定 sendln '' ;空Enterを送信する pause 10 ;10秒待機 endwhile ;whileに戻る。while指定の値を減算などしていないので、永遠に続く |
この4行を書くだけで、Tera Term上では10秒に一回定期的に空Enterを送信し続けてくれます。
forは原則として有限の値に対してループするため、永遠の空Enterマクロを作る事は出来ません。
6.2.3. まとめ
whileコマンドを使ってもforコマンドと同様にループを作ることができます。
whileコマンドは値が0以外の時にループを行う為、回数を指定したループを作るのはforコマンドより手間がかかります。
反面、無限にループするようなマクロは簡単に作ることができます。
次章では分岐処理について書いてみたいと思います。