プログラムが別個にコンパイルされたプログラムを動的に呼び出すとき、呼び出されるプログラムが使用できないことがあります。 例えば、システムがストレージ不足だったり、ロード・モジュールを見つけることができない場合があります。CALL ステートメントに ON EXCEPTION 句も ON OVERFLOW 句もない場合、アプリケーションは異常終了します。
一連のステートメントを実行してユーザー定義のエラー処理を行う場合は、ON EXCEPTION 句を使用します。例えば、次のコード・フラグメントでプログラム REPORTA が利用不可である場合、制御は ON EXCEPTION 句に渡されます。
MOVE “REPORTA” TO REPORT-PROG
CALL REPORT-PROG
ON EXCEPTION
DISPLAY “Program REPORTA not available, using REPORTB.'
MOVE ”REPORTB“ TO REPORT-PROG
CALL REPORT-PROG
END-CALL
END-CALL
ON EXCEPTION 句は、呼び出されるプログラムの可用性についてのみ適用されます。呼び出されるプログラムの実行中にエラーが発生した場合、ON EXCEPTION 句は実行されません。