シグナル処理の概要

制約事項: 次の説明はネイティブ COBOL にのみ該当します。

ランタイム システムは、プログラムの強制終了につながるオペレーティング システムの各種シグナルに対して、デフォルトのシグナル ハンドラーを設定します。そのため、そのようなシグナルが発生した場合でも、COBOL システムでは終了前に適切なクリーンアップ処理が実行されます。したがって、開かれていたファイルは (破損を防ぐために) 閉じられ、PC は正常状態に戻され、ユーザーは終了を通知され、エラー処理が実行されます。

次のルーチンを使用して、ランタイム システムで使用されるシグナル処理を補完またはオーバーライドできます。

これらのルーチンを使用すると、同じシグナルに複数のハンドラーを関連付け、ハンドラー間に優先順位を設定できます。これらのルーチンを呼び出すことができるのは C プログラムのみです。シグナル値はプラットフォームに依存するため、正しく識別するには C のインクルードファイル <signal.h> が必要であるためです。

これらのルーチンを、単一のシグナル ハンドラーに通知するだけで、複数のアプリケーションが安定して協働するのを妨げているオペレーティング システムのシグナル呼び出し処理 (signal() など) の代わりに使用してください。

COBOL プログラムの呼び出し前に、上記の C ライブラリのシグナルルーチンを使ってシグナル ハンドラーを設定すると、デフォルトのシグナル ハンドラーがオーバーライドされる可能性があります。そのために、COBOL プログラムの呼び出し後に C ライブラリのシグナル呼び出しを使うと、デフォルトのランタイムのシステムハンドラー、COBOL やユーザーのシグナル ハンドラーが上書きされ、予想できない結果を招きます。