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

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

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

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

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