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