handleOverflow
V6 例外モード (『V6 の例外互換性の使用』を参照) を使用する場合は、 vgVar.handleOverflow システム変数を使用して、オーバーフロー後のエラーを EGL で処理する方法を指定できます。通常は、この変数のデフォルト設定 (0) を 使用します。
2 つのタイプのオーバーフローが発生する可能性があります。
- ユーザー変数オーバーフローは、算術演算の結果または数値変数への代入において、変数の長さが原因で (小数点位でない) 有効値が失われたときに 発生します。
- 算術演算の結果が最大桁数 (EGL 生成の COBOL の場合は 31 桁、EGL 生成の Java™ の場合は 32 桁) を超えると、最大値オーバーフローが発生します。
V6 例外モードを使用していない場合、変数オーバーフローが発生すると、 EGL は RuntimeException をスローします。
代入時にオーバーフローが発生した場合、オーバーフローを処理するよう設定していれば、 ターゲット変数にはソース値の一部が代入されます。
vgVar.handleOverflow は、 次の表のいずれかの値に設定できます。
| 値 | 結果 |
|---|---|
| 0 (デフォルト値) | EGL ランタイム・コードは sysVar.overflowIndicator システム変数を 1 に 設定して処理を続行する。 COBOL 生成の際にシンボリック・パラメーター HANDLEOVERFLOW を使用することにより、vgVar.handleOverflow のデフォルト値をオーバーライドできます。 詳しくは、『ユーザーが設定可能な事前定義シンボリック・パラメーター』を参照してください。 |
| 1 | EGL は RuntimeException をスローする。 |
| 2 | EGL ランタイム・コードは sysVar.overflowIndicator システム変数を 1 に 設定して処理を続行する。 この値は以前のバージョンとの互換性のために保持されており、 値 0 の場合と同じ効果を持ちます。 |
vgVar.handleOverflow には、次の特性があります。
- プリミティブ型
- NUM
- データ長
- 1
- セグメント化された converse にわたって値が保存されるかどうか
- はい
例
次の例は、vgVar.handleOverflow 変数を示しています。
vgVar.handleOverflow = 1;
互換性に関する考慮事項
| プラットフォーム | 問題 |
|---|---|
| COBOL 生成 | checkNumericOverflow ビルド記述子オプションを YES に設定している場合を除き、vgVar.handleOverflow は、無視されます。checkNumericOverflow に NO を設定して V6 例外モードを使用すると、いずれのタイプのオーバーフローが発生した場合でもプログラムは終了されます。 シンボリック・パラメーター HANDLEOVERFLOW を使用することにより、vgVar.handleOverflow のデフォルト値を変更できます。 |