Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 プログラミング・ガイド


ウィンドウ表示日付フィールドのオーバーフローの考慮

(年末尾型でない) ウィンドウ表示日付フィールドが算術演算に関与するときは、世紀ウィンドウに応じて、まずフィールドの 年号構成要素の値が 1900 または 2000 だけ増分されたかのように処理されます。

01 Review-Record.
    03 Last-Review-Year Pic 99 Date Format yy.
    03 Next-Review-Year Pic 99 Date Format yy.
. . .
    Add 10 to Last-Review-Year Giving Next-Review-Year.

上の例で、世紀ウィンドウが 1910-2009 で、Last-Review-Year の値が 98 である場合は、1998 を与えるため、まず Last-Review-Year が 1900 だけ増分されたかのようにして計算が進められます。次に、ADD 演算が実行され、2008 の結果が与えられます。この結果は、08 として Next-Review-Year に保管されます。

しかし、次のステートメントを使用すると、2018 という結果になります。

Add 20 to Last-Review-Year Giving Next-Review-Year.

この結果は、世紀ウィンドウの範囲の外側になります。 結果が Next-Review-Year に保管されると、それ以降に Next-Review-Year が参照された場合に 1918 として解釈されるので、誤りになります。この場合、演算の結果は、ON SIZE ERROR 句が ADD ステートメントに指定されているかどうかによって異なります。

この考慮事項は、内部ブリッジングを使用するときには大切です。出力ファイルに書き出すために 4 桁年号の日付フィールドを 2 桁に短縮するときは、日付が世紀ウィンドウの範囲内になるようにする必要があります。そうすると、2 桁年号の日付がフィールドで正しく表されるようになります。

適切な計算が行われるようにするには、短縮を行うための COMPUTE ステートメントに、ウィンドウ外条件を処理するための SIZE ERROR 句を指定しなければなりません。以下に例を示します。

Compute Output-Date-YY = Work-Date-YYYY
On Size Error Perform CenturyWindowOverflow.

ウィンドウ表示日付受け取り側についての SIZE ERROR 処理は、世紀ウィンドウの範囲外となるすべての年号値を認識します。すなわち、世紀ウィンドウの開始年より小さい年号値も、世紀ウィンドウの終了年より大きい年号値の場合と同様に、SIZE ERROR 条件を引き起こします。

また、DATEPROC(TRIG) コンパイラー・オプションが有効なら、結果に 0 または 9 のトリガー値が含まれている場合、その結果の年部分 (それぞれ、00 または 99) が世紀ウィンドウの範囲内であっても SIZE ERROR 条件が発生します。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)