16.分岐命令

16.1.概要

分岐命令は、プログラムの実行を、プログラムのある行から他の(プログラムの)行に分岐させます。分岐命令には以下の3種類の命令があります。

  • ラベル命令

  • 無条件分岐命令

  • 条件分岐命令

16.2.ラベル定義命令:ラベル[x]

ラベル[x]

ラベルはプログラム分岐先の場所を示します。ラベルはラベル命令によって定義されます。

ラベルを説明するためのコメントを追加することができます。ラベルを定義した後は、無条件分岐命令や条件分岐命令で使用することができます。図153."ラベル[x]"を参照ください。

図153.ラベル[x]

ラベル[x]

16.3.無条件分岐命令

無条件分岐命令は、実行されると必ずプログラムのある行から他の(プログラムの)行に分岐します。無条件分岐命令には2種類あります。

  • ジャンプ命令 - 指定されたラベルに分岐します。

  • プログラム呼び出し命令 - 他のプログラムに分岐します。

ジャンプ ラベル[x]

ジャンプ ラベル[x]命令は、プログラムを指定されたラベルに分岐させます。図154."ジャンプ ラベル[x]"を参照ください。

図154.ジャンプ ラベル[x]

ジャンプ ラベル[x]

ヨビダシ (プログラム)

ヨビダシ(プログラム)命令は、他のプログラム(サブプログラム)に分岐させ、それを実行します。呼び出されたプログラムの実行が終了すると、呼び出したプログラム(メインプログラム)のプログラム呼び出し命令の直後の命令に戻ってきます。図155."ヨビダシ(プログラム)"を参照ください。プログラム呼び出しの引数については、28."呼び出し命令とマクロ命令の引数"を参照ください。

ディスペンスツールでは、ジョブプログラムでのみ、この命令を使用することができます。

図155.ヨビダシ(プログラム)

ヨビダシ(プログラム)

プログラムでアプリケーションプロセスを有効にした時、アプリケーションマスクを設定します。アプリケーションマスクが使用されている場合、呼び出すことのできるプログラム種類について、以下のルールがあります。

  • アプリケーションマスク無しと設定されているプログラムは、(プログラム呼び出し命令を使って)アプリケーションマスクが特定のアプリケーション(スポットツール+、ハンドリングツール、ディスペンスツール)に設定されているプログラムを呼出すことができます。

  • アプリケーションマスクに特定のアプリケーションが設定されているプログラムは、アプリケーションマスク無しと設定されているプログラムか同じアプリケーションに設定されているプログラムを呼び出すことができます。

  • アプリケーションマスクに特定のアプリケーションが設定されているプログラムは。異なるアプリケーションマスクを持つプログラムを呼び出すことはできません。

呼び出し命令に引数を指定することができます。28."呼び出し命令とマクロ命令の引数"を参照ください。

シュウリョウ

プログラム終了命令はプログラムの実行を終了する命令です。図156."シュウリョウ"を参照ください。

図156.シュウリョウ

シュウリョウ

16.4.条件分岐命令

条件分岐命令は、条件が満たされたかどうかによってプログラムをある場所から別の場所に分岐します。条件分岐命令には2種類あります。

  • 条件比較命令 - ある条件が満たされていれば指定されたラベルに分岐します。これにはレジスタ比較命令、I/O比較命令およびパレットレジスタ比較命令があります。

  • 条件選択命令 - レジスタの値によって指定されたジャンプ命令やサブプログラム呼び出し命令に分岐します。

モシ レジ[x](演算子)(値)(処理)

レジスタ条件比較命令は、レジスタの値ともう一方の値を比較して、比較の結果が真であれば処理を実行します。図157."レジスタ条件比較命令"を参照ください。

図157.レジスタ条件比較命令

レジスタ条件比較命令

モシ(I/O)(演算子)(値)(処理)

I/O条件比較命令は、I/Oの値ともう一方の値を比較して、比較の結果が真であれば処理を実行します。

I/O比較命令については図158."I/O条件比較命令(DI/DO、RI/RO、SI/SO、UI/UO)"から図160."I/O条件比較命令(レジスタ、AI/AO、GI/GO、システム変数)"を参照ください。

図158.I/O条件比較命令(DI/DO、RI/RO、SI/SO、UI/UO)

I/O条件比較命令(DI/DO、RI/RO、SI/SO、UI/UO)

図159.I/O条件比較命令(パレットレジスタ)

I/O条件比較命令(パレットレジスタ)

図160.I/O条件比較命令(レジスタ、AI/AO、GI/GO、システム変数)

I/O条件比較命令(レジスタ、AI/AO、GI/GO、システム変数)

以下のように、条件比較命令では、条件を論理演算子(カツ、マタハ)を使って、1行に複数の条件を指定できます。

  • 論理積(カツ)

    モシ(条件1)カツ(条件2)カツ ... ,(処理)

    例えば、1: モシ レジ[1]=1 カツ レジ[2]=2 カツ DI[2]=オン, ジャンプ ラベル[2]

  • 論理和(マタハ)

    モシ(条件1)マタハ(条件2)マタハ ... ,(処理)

    例えば、1: モシ DI[10]=オン マタハ レジ[7]=レジ[8], ジャンプ ラベル[2]

    「カツ」と「マタハ」の論理演算子を1つの命令に混在させることはできません。

1つの命令の中に「カツ」(論理積)または「マタハ」(論理和)のどちらかが複数教示されていて、「カツ」を「マタハ」に、また「マタハ」を「カツ」に変更した時、同じ命令の中に教示されている他の「カツ」や「マタハ」の論理演算子も自動的に変更され、以下のメッセージが表示されます。

ティーチ-062 論理演算子カツをマタハに置換えました

ティーチ-063 論理演算子マタハをカツに置換えました

1つの命令の中で「カツ」、「マタハ」で繋ぐことのできる条件の最大数は5です。

モシ(条件1)マタハ(条件2)マタハ(条件3)マタハ(条件4)マタハ(条件5),(処理)(最大の5つの条件)

複合演算を使った条件比較命令

以下は複合演算を使った条件比較命令です。

モシ (レジ[1] = (GI[1] + レジ[1]) * AI[1]), ジャンプ ラベル[1]
モシ (DI[1] カツ (!DI[2] マタハ DI[3])), ジャンプ ラベル[1]
  • 条件比較命令の条件文に複合演算式を使用できます。

  • 条件文の結果はブール型でなければなりません。

  • 条件文の結果がオンの場合、条件分岐命令の実行文(例えば、ジャンプ ラベル)が実行されます。

  • 条件文に複合演算式を使用する場合、次の文を条件分岐命令の実行部分に使用できます。

    ジャンプ ラベル[ ]
    ヨビダシ
    複合演算代入文
    パルス文
    
  • 条件分岐命令の実行文に複合演算代入文とパルス文を指定できるのは、条件文が複合演算式の場合だけです。次の例を参照してください。

    モシ (DI[1]), DO[1]=(オン)
    モシ (DI[2]), DO[1]=パルス
    
  • 条件文の項目(データまたは演算子)の最大数は、およそ20個です。項目の正確な最大数は、データ型に応じて異なります。

複合演算命令の詳細は、24."複合演算命令"を参照ください。

センタク レジ[x] =(値1)(処理)=(値2)(処理)=(値N)(処理)ソノタ(処理)

条件選択命令はレジスタの値を1つまたはいくつかの値と比較し、比較の結果が真となった場合を選択して処理を実行します。

  • レジスタの値が、比較する値のどれか1つと同じ場合、その値に指定されたジャンプ命令または呼び出し命令が実行されます。

  • レジスタの値が、比較するどの値とも同じでない場合、「ソノタ」に指定されたジャンプ命令または呼び出し命令が実行されます。

図161."センタク命令"を参照ください。

図161.センタク命令

センタク命令