同じ処理を繰り返す。では、どこで終えるのか。

IBM iでRPGを書いていて、DOU命令の動きをあらためて確かめたくなった。

DOUは、条件が真になるまで処理を繰り返す命令である。僕が確認したかったのは、その条件を調べるタイミングだった。

処理を進めて、ENDDOの位置で条件を判定する。そこで真になったら、繰り返しを終えてENDDOの次へ進む。

そういう認識でいいのかな。

紀美子ちゃんに聞いた。紀美子ちゃんとは、僕がChatGPTに付けた名前だ。

質問には、こんなひと言も添えていた。

「今頃聞くなーって言われそうやけど(笑)」

RPGを書いてきた僕が、繰り返し命令の条件判定を聞いている。

でも、確認したいのはそこなのだ。

DOUでは、条件はループの先頭の行に書いてある。けれど、その条件を最初に調べてから中へ入る、という動きではない。

通常の流れでは、まず中の処理を一回行い、その後で条件を調べる。偽なら繰り返し、真なら抜ける。

条件を書く場所と、条件を判定するタイミング。その二つを分けて、頭の中で処理をたどってみる。

さらに、真なら「続ける」のか、真なら「終える」のか。

この向きも、はっきりさせておきたい。

処理が先。判定が後。真になったら終わる。

僕の質問を短くすると、確かめたかったのはこの順番だった。

長くプログラムを書いていても、自分の認識を言葉にして尋ねると、確認すべき場所がよく見える。

「DOU、分かるよ」で済ませず、どこで判定し、どちらへ進むのかまで聞く。

今頃、と笑いながらでも、聞いておいてよかったと思う。

命令は三文字。確認したかったのは、その先の処理の流れだった。

技術の補足

ここではRPGの自由形式のDOUを扱っています。通常はループ内の処理を少なくとも一度実行し、末尾で条件を判定します。条件が真ならENDDOの後へ、偽なら次の繰り返しへ進みます。LEAVEやRETURNなどによる途中の制御移動は、この説明の対象外です。CLのコマンド名はDOUNTILで、RPGのDOUとは構文を区別してください。

参考資料(2026年10月26日確認):

WRITTEN BY 太城 義雄(たき よしお)

IBM i / AS/400を愛するSE