Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


仮定による世紀ウィンドウ

プログラムがウィンドウ化日付フィールドを使用する場合、コンパイラーは YEARWINDOW コンパイラー・オプション で定義された世紀ウィンドウをコンパイル単位に適用します。 ウィンドウ化日付フィールドを非日付と一緒に使用する場合で、コンテキスト上、非日付はウィンドウ化日付として扱う必要がある場合、コンパイラーは仮定による世紀ウィンドウを使用して非日付フィールドを解決します。

仮定による世紀ウィンドウは 1900-1999 であり、これは、一般にはコンパイル単位の世紀ウィンドウと同じではありません。

多くの場合、特にリテラルの非日付の場合、この仮定による世紀ウィンドウは正しい選択です。次の構成では、リテラルは、世紀ウィンドウが例えば 1975-2074 の場合でも、1972 年 1 月 1 日という元の意味を保たなければならず、2072 に変わるべきではありません。

01  Manufacturing-Record.
    03  Makers-Date Pic X(6) Date Format yyxxxx.
. . .
    If Makers-Date Greater than “720101” . . .

この仮定が正しくても、DATEVAL 組み込み関数を使用することによって年を明示し、警告レベルの診断メッセージ (仮定による世紀ウィンドウを適用することから生じるメッセージ) が出ないようにするのが適切です。

If Makers-Date Greater than
    Function Dateval(“19720101” “YYYYXXXX”) . . .

時には、仮定が正しくない場合があります。次の例の場合、Project-Controls が COPY メンバーの中にあり、このメンバーが、西暦 2000 年処理用にまだアップグレードされていない他のアプリケーションによって使用され、このため Date-Target では DATE FORMAT 文節を指定することができないものとします。

01  Project-Controls.
    03  Date-Target     Pic 9(6).
. . .
01  Progress-Record.
    03  Date-Complete   Pic 9(6) Date Format yyxxxx.
. . .
    If Date-Complete Less than Date-Target . . .

この例で、Date-CompleteDate-Target より前の日付 (より小) になるようにするには、次の 3 つの条件が真でなければなりません。

ただし、Date-Target は、DATE FORMAT 文節を持っていないので、非日付です。したがって、これに適用される世紀ウィンドウは、仮定による世紀ウィンドウ 1900-1999 であり、1900 年 1 月 15 日として処理されることになります。この結果、Date-CompleteDate-Target より大きいことになり、これは意図した結果ではありません。

この場合には、DATEVAL 組み込み関数を使用して、この比較のために Date-Target を日付フィールドに変換すべきです。以下に、その例を示します。

If Date-Complete Less than
    Function Dateval (Date-Target “YYXXXX”) . . .

関連タスク
日付処理の明示的制御


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

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