2 つのオペランドが DATE 属性を持つ場合は、コンパイラーによって暗黙の日付の比較 および変換が行われます。DATE 属性は、変数、引数、または戻り値が、指定されたパターンの日付を持つことを指定します。2000 年言語拡張 は、日付パターンの理解で説明する 多くの日付パターンをサポートします。
DATE 属性は、次の属性セットのいずれかを持つ変数についてのみ有効です。
長さまたは精度の n は、日付パターンまたはデフォルト・パターンの長さ に等しい定数でなければなりません。
RESPECT コンパイル時オプション (この章の後で説明) を指定した場合、DATE 組み込み関数は、属性 DATE('YYMMDD') を持った値を戻します。これにより、エラー・メッセージが生成されることなく、DATE() を、属性 DATE('YYMMDD') を持った変数に 割り当てることができます。ただし、DATE() を、DATE 属性を持たない変数に割り当てる場合は、エラー・メッセージが生成されます。
以下に、DATE 属性を使用した例をいくつか示します。
dcl gregorian_Date char(6) date;
dcl julian_Date pic'(5)9' date ('YYDDD');
dcl year fixed dec(2) date('YY');
アプリケーションに 2000 年問題がない場合にも、DATE 属性は有効です。 以下の例に示すように、その属性を使用して、異なる日付を取り扱うことができます。
dcl gregorian_Date char(8) date ('YYYYMMDD');
dcl julian_Date pic'(7)9' date ('YYYYDDD');
if julian_Date > gregorian_Date then ...