すべての数値項目について、有効な数値データであるかをチェックします。
制限事項:これらのスイッチは、ネイティブ COBOL でのみサポートされます。
例:
working-storage section.
01 item-a pic 9.
procedure division.
If item-a = 0.
Display "zero"
else
display "nonzero"
end-if.
変数 item-a は VALUE 句で初期化されません。そのため、空白文字 x"20" が含まれます。F スイッチを有効にしてこのプログラムを実行すると、数字フィールドに、数値以外の値が含まれているかどうかがランタイム システムでチェックされ、含まれている場合はランタイム エラー 163 になります。
説明:
データが有効でない場合は、ランタイム システム エラー 163 (「数字項目に無効な文字がある」) が生成されます。このスイッチを無効にすると、このチェックは実行されません。
このチェックは、CHECKNUM コンパイラ指令を指定して作成された生成コード、および中間コードに対してのみ実行されます。
ランタイム システム、および生成コードで、様々なタイプの数字の操作が最適化されます。数値オペランドの数値データが無効な場合には、これらの数値オペレーションの実行結果が無効になります。デフォルトでは、無効な数値データの演算が実行されようとすると、ランタイム システムでランタイム システム エラー 163 が生成されます。
無効なデータは、中間コードと元のコードでの処理が異なります。プログラムの開発中は、数字フィールドのチェックを有効にすることをお奨めします。
ランタイム エラー 163 を受け取った場合は、コードを調整し、無効なデータが使用されないようにすることをお奨めします。+F スイッチを有効にし、ランタイム システム エラー 163 が検知されるまで、作成したプログラムをアニメートしていくと、コード中の無効な数値データを検索することができます。
数字フィールドの無効なデータを解決するための次のコンパイラ指令を 1 つ以上使用すると、コードを修正できない場合があります。