シグナル処理の概要

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

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

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

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

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