Rational Developer for System z
PL/I for Windows, Version 7.6, プログラミング・ガイド

暗黙的な日付比較

DATE 属性により、DATE 属性によって宣言された 2 つの変数を比較するときに、暗黙的な共通化 が行われます。1 つの変数のみが DATE 属性を持つ比較 にはフラグが付けられます。その他の被比較数は、通常、同じ DATE 属性を持つかのように処理されます。ただし、後から説明するいくつかの例外があります。

暗黙的な共通化とは、コンパイラーが、日付を共通な比較可能表記に変換するコードを 生成することを意味します。この処理では、WINDOW コンパイル時オプションで指定した ウィンドウ を使用して、2 桁年が変換されます。

次のコード断片において、DATE 属性が受け付けられると、2 番目の display ステートメントの比較は「ウィンドウ化」されます。つまり、ウィンドウが 1900 から始まると、比較は false を戻します。しかし、ウィンドウが 1950 から始まると、比較は true を戻します。

    dcl a   pic'(6)9' date;
    dcl b   pic'(6)9' def(a);
    dcl c   pic'(6)9' date;
    dcl d   pic'(6)9' def(c);

    b = '670101';
    d = '010101';

    display( b || ' < ' || d || ' ?' );
    display( a < c );

日付の比較は、以下の場所でも行うことができます。

同種パターンを持った日付の比較

コンパイラーは、以下の条件のもとでは、同一パターンを持った日付を比較する特別なコード を生成しません。

異なるパターンを持った日付の比較

異種パターンを持った日付を伴う比較では、コンパイラーは、日付を共通の比較可能表記に変換するコードを生成します。変換が行われた後に、コンパイラーは 2 つの値を比較します。

DATE 属性およびリテラルを伴う比較

1 つの被比較数が DATE 属性を持ち、その他がリテラルを持つ比較を行う場合、コンパイラーは W レベルのメッセージを発行します。以後のコンパイラー・アクションは、以下のように、リテラルの値によって異なります。

  dcl start_date char(6) date;
  if start_date >= '' then /* no windowing */
  ...
  if start_date >= '851003' then /* windowed */
  ...

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)