制御文としては、以下のものがあります。
文 | 説明 |
---|---|
IF | 処理の分岐 |
WHILE | ループ |
GOTO | ジャンプ |
IF文は条件文によって処理の流れを変える制御文です。条件文の演算結果がTRUE(真)、FALSE(偽)によって処理が分岐されます。
構文1 | : | 基本形 | |
IF(条件文) | |||
文・・・条件文がTRUE(真)のときに実行されます | |||
ENDIF |
構文2 | : | 条件文によって処理がそれぞれに分岐する場合 | |
IF(条件文) | |||
文・・・条件文がTRUE(真)のときに実行されます | |||
ELSE | |||
文・・・条件文がFALSE(偽)のときに実行されます | |||
ENDIF |
構文3 | : | 複数の条件文によって処理が分岐する場合 | |
IF(条件文1) | |||
文・・・条件文1がTRUE(真)のときに実行されます | |||
ELSEIF(条件文2) | |||
文・・・条件文2がTRUE(真)のときに実行されます | |||
ELSEIF(条件文3) | |||
文・・・条件文3がTRUE(真)のときに実行されます | |||
ENDIF |
・文は複数の文を記述することができます。
・IF文の中にIF文を入れ子にすることができます。
・条件文は1つだけ記述することができます。
(条件文どうしの演算結果を条件文とすることはできません)
次の例は"TSSX"という文字列を検索してその結果をMsgBox関数で表示しています。
IF(Scan("TSSX")) | |
MsgBox("ログオンが完了しました") | |
ELSE | |
MsgBox("ログオンは完了していません") | |
ENDIF |
WHILE文は条件文がTRUE(真)である間、処理を繰り返します。
WHILE(条件文) | ||
文1 文2 : | ||
ENDWHILE |
・文は複数の文を記述することができます。
・WHILE文の中にIF文やWHILE文を記述することができます。
・条件文は1つだけ記述することができます。
(条件文どうしの演算結果を条件文とすることはできません)
・WHILE文から強制的に抜けるときはBREAKWHILE文を使います。
・WHILE文の先頭へ強制的に処理を移すときはCONTINUE文を使います。
次の例はWHILE文で無限ループを行い"TSSX"という文字列が見つかるとWHILEから抜けます。見つからなかったらキー入力可能になるのを待ってWHILE文の先頭に戻ります。
WHILE(TRUE) | |||||
IF(Scan("TSSX")) | |||||
MsgBox("ログオンが完了しました") BREAKWHILE | |||||
ELSE | |||||
Wait() CONTINUE | |||||
ENDIF | |||||
ENDWHILE | IF(Scan("TSSX")) |
GOTO文は指定ラベル位置の処理へジャンプします。
GOTO(ラベル) | ||
文1 文2 : | ||
ラベル: | ||
文x1 文x2 : |
・ラベルには任意の文字列を記述することができます。
・ラベルはGOTO文の前後いずれにも記述することができます。
・マクロ内に同一文字列のラベルを複数記述することはできません。
・DLGTEMPLATEからENDDLGTEMPLATEの範囲を超えてGOTO文は使用できません。
次の例では、現在キーボードロック状態の場合ERR_KEYLOCKラベルへジャンプします。
IF(IsKeyboardLock()) | |
GOTO(ERR_KEYLOCK) | |
ENDIF | |
[その他の処理] | |
ERR_KEYLOCK: | |
MsgBox("キー入力できない状態です.") |