hatebu「FOR」「NEXT」を使った繰り返し処理を行います。そもそも繰り返し処理とはどういうものかというと、プログラムが先頭から「END」まで実行するとき、「FOR」「NEXT」で囲んだ区間だけ、指定回数繰り返すのです。「NEXT」までスキャンしたら、再度「FOR」まで戻って、また「NEXT」まで行くと「FOR」に戻ります。この区間を指定回数繰り返すとプログラムの「END」までスキャンし、再度プログラムの先頭に戻ります。次のプログラムから見ていきましょう。「X0」が入ると「M0」がパルスで入ります。その下に繰り返し命令があります。K10となっているので10回繰り返します。D0]という命令が10回繰り返されます。「M0」は1スキャン入るので、何回繰り返し処理をしても、そのスキャンは入り続けます。このプログラムはどのような意味があるでしょうか?実は何も意味がありません。何回繰り返しても結果は同じです。繰り返す必要もありません。次のプログラムを見てみましょう。D0]は実行すると「D0」に”1”を加算します。「X0」を押すと「M0」がパルスで入りそのスキャンだけ「FOR」「NEXT」の区間が有効になります。10回繰り返しますから、「D0」の値は”10”になります。このプログラムも特に繰り返し処理をする必要はありません。単純に”10”を転送しているのと同じです。繰り返し処理の機能を有効にするにはインデックスレジスタを組み合わせる必要があります。繰り返し処理の内部にインデックスレジスタを組み込んでいます。「NEXT」の前でインデックスレジスタに”1”を加算しています。この命令を実行すると「D0」~「D9」までに”1”を書き込みます。先ほどのプログラムよりもプログラムらしくなってきました。繰り返し処理を行う必要がある動作ではありません。K10]の命令で簡単に処理できるレベルです。次のプログラムを見てみます。これは転送元の値と転送先の場所を、繰り返す回数によって変化しています。これにより「D1」には”1”が入り、「D2」には”2”が入り、「D9」には”9”は入ります。このようにデータレジスタに対して、数値が連番で入っていきます。これが基本的な繰り返し処理の使い方です。繰り返し処理は、シーケンス回路のみしか経験ない方は戸惑うかもしれませんが、使いこなせば複雑な処理でも簡単に処理することが可能になります。DL-RS1では繰り返し処理の実践的な使い方を解説していますので、参考にしてください。最後に簡単な検索プログラムを作ってみたので、参考にしてください。このプログラムの条件として、データレジスタ100個で1つのデータとします。「ZR0」~「ZR99」の固まりで1個のデータとします。ZRはファイルレジスタで、データレジスタと同じようにつかえます。各データの一番先頭のデバイスに識別用の数値を入れます。データを検索するときは、この先頭の識別用の数値で検索を開始します。「ZR0」~「ZR9999」までをデータの保存領域としています。「D0」に検索対象の数値をいれ「P250」を実行します。検索対象が存在すれば「D100」~「D199」にデータを転送してきます。「ZR」内の保存領域からは削除する仕様になっています。