条件分岐 - IF
条件分岐は「IF文」とも呼ばれ「IF [(条件式)](処理)」の形で記述されます。「もし条件式が成立すれば、処理を行う」という意味になり、条件式が成立しなければ、何もせずに次のブロックに進みます。
比較演算子に関しては「演算子」のページで解説していますので、そちらをご覧ください。
処理の部分は「GOTO」か「THEN」になります。「GOTO」の場合は「無条件分岐」のページで解説してある通り「GOTO」+「数値」で記述し、数値と同じシーケンス番号のあるブロックに飛びます。
THENを使用する場合は「THEN」+「代入式(計算式)」という記述になります。「IF [ #100 LE 0 ] THEN #101 = 50.」というブロックであれば「#100が0以下なら、#101に50.を代入する」という意味になります。
古い設備になると「THEN」の機能をサポートしておらず、使用できない場合もありますので注意が必要です。
・ ・ #100 = 0 IF [ #100 EQ 0 ] GOTO 5 (#100が0なのでN5に飛ぶ) M3 S2000 N5 IF [ #100 NE 0 ] THEN #100 = 0 (#100が0以外ではないので、何もせずに次のブロックへ) ・ ・
IF文で繰り返しを行うプログラム
・ ・ #100 = 10 (繰り返し回数) N100 IF [ #100 LE 0 ] GOTO 200 (#100が0以下ならN200へ飛ぶ) (処理) #100 = #100 - 1 GOTO 100 N200 ・ ・
上は(処理)を10回繰り返すプログラムですが、下のプログラムでもほぼ同じことができます。IF文を処理の「前に置くか」「後に置くか」の違いです。
ただし、「#100」の初期値を0にした場合、上のプログラムでは一度も処理を行わずにN200へ飛びますが、下のプログラムでは処理を一度だけ行うことになります。処理の内容によって使い分けましょう。
・ ・ #100 = 10 N100 (処理) #100 = #100 - 1 IF [ #100 GT 0 ] GOTO 100 (#100が0より大きいならN100へ飛ぶ) ・ ・
GOTO で THEN と同じ機能を実現する
古い設備では「THEN」の機能をサポートしていないものもありますが、「GOTO」でも機能を代替できます。
IF [ #100 LE 0 ] THEN #101 = 50.
上のプログラムは「#100が0以下なら、#101に50.を代入する」というものですが、「THEN」を使わない下のプログラムでも同じ機能を実現できます。
IF [ #100 LE 0 ] GOTO 100 (#100が0以下のならN100へ飛ぶ) GOTO 200 N100 #101 = 50. N200
上のプログラムはだいぶ長くなってしまいますが、下のプログラムであればもう少し短くできます。
IF [ #100 GT 0 ] GOTO 200 (#100が0より大きいならN200へ飛ぶ) #101 = 50. N200
当サイトのPDF版を作成しました。教育資料やリファレンスとして使用して頂ければと思います。
上級編も作成しました。