(年末尾型でない) ウィンドウ表示日付フィールドが算術演算に関与するときは、世紀ウィンドウに応じて、まずフィールドの 年号構成要素の値が 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 条件が発生します。
関連タスク
内部ブリッジングの使用