signal() のような C ライブラリのシグナル呼び出しを使用して設定されているシグナル ハンドラーがある場合は、cobpostsighandler() ルーチンを使用するように変更します。これにより、独自のハンドラーとランタイム システムのデフォルト ハンドラー、COBOL の拡張機能、およびユーザー設定のシグナル ハンドラーが、他のハンドラーをオーバーライドすることも、予期しない結果をもたらすこともなく、すべて共存できるようになります。
cobpostsighandler() ルーチンのインターフェイスは、signal() のインターフェイスによく似ています。cobpostsighandler() ルーチンには、signal() に渡す 2 つのパラメーターに加え、優先度を渡します。
signal() と cobpostsighandler() ルーチンの間には、次の相違点があります。
cobpostsighandler() は、設定されたハンドラーを示すポインターまたは NULL を返します。返されたポインターは、後で cobremovesighandler() によってハンドラーを削除する場合に使用できます。NULL の戻り値は、そのシグナルに対してハンドラーが設定されていないことを示します。
反対に、cobpostsighandler() ルーチンを使用して設定したハンドラーは再設定する必要がなく、設定された状態が維持されます。ハンドラーの実行を 1 回のみに限定する場合は、cobremovesighandler() ルーチンを使って該当ハンドラーを削除します。