シグナルを使用するサードパーティのソフトウェア

signal() や sigaction() のような C ライブラリのシグナルルーチンを使用してシグナル ハンドラーに通知しているサードパーティのソフトウェアを使っている場合、予期しない結果が発生しかねません。 たとえば、COBOL が呼び出される前にサードパーティのソフトウェアがハンドラーに通知すると、COBOL が呼び出された時に、サードパーティのハンドラーは、ランタイム システムや COBOL ハンドラーで上書きされるかも知れません。 サードパーティのソフトウェアが結果的にシグナルを発生すると、115 のエラーが発生します。

これを解決するために、実行時チューナー signal_regime を使用できます。 この実行時チューナー signal_regime は、シグナル ハンドラーが COBOL 呼び出しの前に通知された場合に、指定されたシグナルに対してハンドラーが通知されることを押さえます。

ハンドラーが、これにより、シグナルの通知を押さえられた場合、cobpostsighandler() ルーチンは NULL を返却します。 したがって、デフォルトのランタイム システムのハンドラーや、シグナルを使って実現された追加の COBOL 機能は、使用不可になります。 また、cobpostsighandler() ルーチンからの戻り値が NULL かどうかをチェックする必要があります。

この実行時チューナー signal_regime tunable は、サードパーティのソフトウェアだけに適用されることを推奨します。 通常の処理には cobpostsighandler() ルーチンを使ってください。