IF・ELSE IF・ELSE

条件判断によって処理を分岐させるコマンドです。まず最初にIFで判断し、条件が成立した場合はインデントされた次の行に移行します。成立しない場合は現在のインデントと同じ(またはそれ以下の)インデントの行まで飛びます。その行がELSE IFならまた条件判断を行い、ELSEなら無条件でインデントされた次の行に移行します。

① | ＩＦａ　＝＝　０ | ←aが0ならば②へ、違うなら④へ
② |  | ｂ　＝　ｂ　＋　１ |
③ |  | ｃ　＝　ｃ　＋　１ | ←終わったら⑩へ
④ | ＥＬＳＥ　ＩＦａ　＝＝　１ | ←aが1ならば⑤へ、違うなら⑦へ
⑤ |  | ｃ　＝　ｃ　＋　１ |
⑥ |  | ｄ　＝　ｄ　＋　１ | ←終わったら⑩へ
⑦ | ＥＬＳＥ | ←⑧へ
⑧ |  | ｄ　＝　ｄ　＋　１ |
⑨ |  | ｅ　＝　ｅ　＋　１ | ←終わったら⑩へ
⑩ | ＩＦｂ　＝＝　０ |
|  | ： ： ： |

ループ

条件に合致する間、処理を繰り返すコマンドです。
まず最初に初期化に記述されている式が実行されます。
次に条件が成立するか判断され、成立した場合はインデントされた次の行に移行します。インデントされた行が終わると、ループ時の式が実行され、また条件判断に戻ります。
条件が成立しない場合はループコマンドと同じ(またはそれ以下の)インデントの行まで飛びます。

同じ処理を100回繰り返す場合は以下のようになります(変数ｉは既に作成されているものとします)。

ループ初期化:i = 0　条件:i < 100　ループ時:i = i + 1 |
| ここに繰り返す処理を書く |
| ： ： ： |
ループが終了するとここに来る |

ループ脱出

条件が成立した場合にループ処理から抜け出ます。

ループ先頭へ

条件が成立した場合にループ処理の先頭へ戻ります(初期化の式は実行されません)。

ラベル

ジャンプ先として指定することができます。
※同一チャート内では、ノードが違っても同じラベル名を使うことはできません

ジャンプ

条件が成立した場合に、他のページまたはラベルに移動します。
ページ内のラベルに移動する時は、「ページ:ラベル」とコロンを挟んで表記します。また、「:ラベル」と言うようにラベルだけ指定されている時は、現在のページの指定ラベルに移動します。

コール

条件が成立した場合に、他のページを呼び出します。呼び出されたページでリターンが実行されるか、ページの最後まで実行されると、呼び出したコールの次の行に処理が移ります。
ページ内のラベルを呼び出す時は、「ページ:ラベル」とコロンを挟んで表記します。また、「:ラベル」と言うようにラベルだけ指定されている時は、現在のページの指定ラベルを呼び出します。
引数に文字列を入力すると引数を渡すことができます(1行に１パラメータ)。呼び出されたページでは@ParamStr[0]～で引数を取り出せます。
戻り値用変数に変数名を記述しておくと、呼出先ページからの戻り値をその変数で受け取ることができます。呼出先ページでは、@Resultに値を代入することで戻り値を返すことができます。

リターン

条件が成立した場合に、コール元に処理を戻します。イベント駆動で呼び出された場合にも使用できます。

ウエイト

待機条件が成立した場合に、処理をストップします。条件が成立していてもタイムアウトになった場合は次の行に進みます。なお、タイムアウト時間を0にすれば、タイムアウトはなくなります。
イベント禁止がTRUEなら、待機中にイベントを処理しません。

タイマー

タイマーコンポーネントを作成します。タイマーは指定された間隔を経過するたびにページを呼び出します。間隔を0にすると、必ず毎回呼び出します。

名称 | 型 | 内容 | プロパティ値
名前 | 文字列 | 任意の名前 | PR_NAME
ページ | 文字列 | コール先ページ | PR_ONNOTIFY
間隔 | 整数 | ページを呼び出すまでの間隔をミリ秒単位で指定 | PR_DELAY
一時停止 | フラグ | TRUEならページはコールされません | PR_PAUSED
タグ | 文字列 | 自由に使える文字列領域 | PR_TAG

タイマーを破棄する場合はオブジェクト削除コマンドを使います。

PCリセット

プログラムカウンタ(PC)を指定ページにリセットします(結果、処理はそのページに移行します)。イベント駆動で呼び出された先で、メインルーチンの実行ポイントを変更したい時に使います。
スタッククリアにチェックを付けると、今までのコール元の情報(スタック)が全てクリアされます。チェックを付けないと、スタックの情報は保持されます。

①スタート |  |  |  |
↓ |  |  |  |
②コール | → | ③処理 | ………………………………＞ | ここで⑤にPCリセット
↓ |  | ↓ | この処理中にイベントが発生 |
↓ |  | ④処理 |  |
↓ |  | ↓ |  |
↓ |  | ⑤処理 |  |
↓ |  |  |  |
⑥処理 |  |  |  |
↓ |  |  |  |

例えば、③を処理中にスタッククリアOFFで⑤へPCリセットを実行すると、④をスキップして⑤に移り、それが終わると⑥に移行します。同様の処理をスタッククリアONで行うと、⑤に移った後、⑥には行かずそのまま終了します。
なお、スタッククリアONの場合は全ての、スタッククリアOFFの場合はリセット前に実行中の(上記で言うと③)ページで作成した自動破棄変数が削除されます。
ページ内のラベルをリセット先にする時は、「ページ:ラベル」とコロンを挟んで表記します。また、「:ラベル」と言うようにラベルだけ指定されている時は、現在のページの指定ラベルがリセット先になります。

リセット

全てのコンポーネント、変数(ステータス変数は除く)、スタックを削除し、指定ページに処理を移します。
ページ内のラベルをリセット先にする時は、「ページ:ラベル」とコロンを挟んで表記します。また、「:ラベル」と言うようにラベルだけ指定されている時は、現在のページの指定ラベルがリセット先になります。

終了

プログラムを終了します。

DoEvent

メッセージを処理し、デッドロックを回避します。