次の例では、LEAVE 文にラベル参照が指定されていません。この場合、IF 文の条件が満たされると、直接 PUT 文に制御が移されます。
DO K = 9 TO 91;
.
.
.
IF COMMAND = 'QUIT' THEN LEAVE;
.
.
.
END;
PUT LIST ('Job finished');
次の例では、LEAVE 文にラベル参照が指定されています。この場合、LOOP2 を終了する END 文に続く最初の文に制御が移されます。
LOOP2: DO WHILE (MORE);
.
.
.
LOOP3: DO J = 2 TO 5;
.
.
.
IF QUAN(J) > 150 THEN LEAVE LOOP2;
END; /* Loop 3 */
.
.
.
END; /* Loop 2 */
説明
LEAVE 文は、この文を直接含む DO グループか、この文でラベルが指定された DO グループ (この文を含む DO グループのいずれか) から制御を移します。
ラベル参照が指定されていない LEAVE 文が実行されると、その LEAVE 文を直接含む DO グループを終了する END 文に続く最初の文に制御が移されます。ラベル参照が指定されている場合は、そのラベルに対応する DO グループの END 文に続く最初の実行可能文に制御が移されます。このように、LEAVE 文は、DO グループの実行を終了するための代替手段として機能します。
ラベル参照が指定されている LEAVE 文では、参照先の DO グループから制御が移される際に、入れ子になった複数の DO グループが終了される可能性があります。