ON 文は、プログラムの実行中に特定の条件が通知されたときに実行するアクションを定義します。一般的な形式は次のとおりです。
ON condition–name ON-unit,
ON condition–name SYSTEM
condition-name は、ANYCONDITION、AREA、ATTENTION、CONDITION(name)、CONVERSION、ENDFILE(f)、ENDPAGE(f)、ERROR、FINISH、KEY(f)、OVERFLOW、RECORD(f)、SIZE、UNDEFINEDFILE(f)、UNDERFLOW、USERCONDITION(expression)、USERCONDITION(SS$_UNWIND)、または ZERODIVIDE です。
ON-unit は、BEGIN ブロックか、DECLARE、DEFAULT、DO、END、ENTRY、FORMAT、LEAVE、OTHERWISE、PROCEDURE、RETURN、SELECT 以外の文です。
キーワードの SYSTEM は、ON-unit のユーザー指定コードを実行する代わりに、条件を説明するシステム生成メッセージが出力されて ERROR 条件が発生することを示します。次に例を示します。
ON ENDFILE (F ) BEGIN; . . . END;
この例では、ファイル終了条件に達すると、BEGIN 文と END 文の間の文のブロックが実行されます。
ON は複合文ですが、入れ子にすることはできません。例外条件に応じた ON 文の使用については、「例外条件を処理する文」のセクションで詳しく説明しています。