シグナル処理の概要

ランタイム システムは、オペレーティング システムのデフォルトの動作を終了に設定するすべてのシグナルに対して、デフォルトのシグナル ハンドラーを設定します。 このデフォルトのシグナル ハンドラーは、終了前に COBOL システムが適切に初期化されることを保証するものです。 したがって、開かれていたファイルは (破損を防ぐために) 閉じられ、PC は正常状態に戻され、ユーザーは終了を通知され、エラー処理が実行されます。

ランタイム システムで使用されるシグナル ハンドラーを補完したり、上書きする 2 つの次のようなルーチンを提供しています。

これらのルーチンは、各シグナルに複数のハンドラーを可能にし、そのハンドラーの優先度をつけた使用を可能にします。 このハンドラーは C プログラム内でしか使用できません。それは、C ライブラリインクルードファイル <signal.h> がプラットフォーム間で変化するシグナル値に必要であるという理由だけではありません。

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

たとえば、COBOL プログラムを呼び出す前にシグナル ハンドラーを通知する C ライブラリのシグナル呼び出しを使うと、シグナル ハンドラーが上書きされてしまいます。 そのために、COBOL プログラムの呼び出し後に C ライブラリのシグナル呼び出しを使うと、デフォルトのランタイムのシステムハンドラー、COBOL やユーザーのシグナル ハンドラーが上書きされ、予想できない結果を招きます。