Isignal() のような C ライブラリのシグナル呼び出しを使用して通知するシグナル ハンドラーを持っている場合、cobpostsighandler() ルーチンを使用するように変更します。 これで、そのハンドラー、デフォルトのランタイム システムのハンドラー、追加の COBOL 機能やユーザー通知のシグナル ハンドラーが、他のハンドラーを上書きせずに、予期しない結果を招かないで、共に終了できるようになります。
cobpostsighandler() ルーチンのインターフェイスは、signal() のインターフェイスに非常に似ています。 signal() に渡す 2 つのパラメーターは cobpostsighandler() ルーチンに渡されますが、優先度が追加されています。
signal() と cobpostsighandler() ルーチンの違いは、以下のとおりです。
cobpostsighandler() の返却値は、ポインターか NULL です。 このポインターを使用して、後で cobremovesighandler() でハンドラーを削除できます。 返却値が NULL の場合、そのシグナルに対してハンドラーは通知されません。
反対に、cobpostsighandler() ルーチンで通知したハンドラーは再通知する必要がなく、通知されたままの状態で残るということです。 ハンドラーを 1 回だけ実行させたければ、cobremovesighandler() ルーチンで削除します。