DO WHILE 文および DO UNTIL 文

説明

DO WHILE 文では、test 式で指定されている条件が満たされている限り、DO グループの文がループで実行されます。条件が満たされていない場合、DO グループの文は実行されず、END 文に続く文に制御が移ります。

DO WHILE 文を実行すると、test 式が評価され、値 b が生成されます。この値は、長さが 1 以上のビット文字列になります。

test 式は、文字列のビットのいずれかが 1 であれば真と見なされ、すべてのビットが 0 の場合にのみ偽と見なされます。

b が真の場合、グループの文が実行されます。対応する END 文が実行されると、test 式を再度評価するために制御が戻され、b の新しい値がテストされます。b が偽の場合、グループの文は実行されず、END 文に続く文で実行が再開されます。

DO UNTIL 文では、特定の条件が満たされるまで、文のグループが実行されます。条件が偽である限り、グループが繰り返されます。

DO グループが実行されるたびに test 式が評価されます。DO グループは、式の値が偽である場合にのみ繰り返されます。式の値が真である場合は、DO グループを終了する END 文に続く次の実行可能文に制御が移ります。

DO UNTIL オプションと DO WHILE オプションは似ており、どちらのオプションでも test 式の状態が評価されます。ただし、DO WHILE オプションでは、DO グループの最初に test 式の値がチェックされますが、DO UNTIL オプションでは、DO グループの最後にその値がチェックされます。したがって、WHILE 句のない DO UNTIL 文を含む DO グループは少なくとも 1 回は必ず実行されますが、DO WHILE 文を含む DO グループは 1 回も実行されない場合もあります。

DO WHILE(EOF = 0);/* an end of file ON-unit sets EOF = 1 */ 
   READ FILE(F) INTO(REC);
   END;

DO UNTIL(B = 1); 
   ARRAY(B) = B; 
   B = B - 1;
   END;

DO WHILE(EOF = 0) UNTIL(SUBSTR(REC,1,6) = 'marker'); 
   READ FILE(F) INTO(REC);
   END;