互換性のある日付 という用語の意味は、日付が DATA DIVISION で使用される場合と PROCEDURE DIVISION で使用される場合とでは異なります。
DATA DIVISION で使用する場合、日付フィールドの宣言、および従属データ項目や REDEFINES 節などの COBOL 言語エレメントを制御する規則 が関係します。次の例では、Review-Year は Review-Date への従属データ項目として宣言することができるので、Review-Date と Review-Year には互換性があります。
01 Review-Record.
03 Review-Date Date Format yyxxxx.
05 Review-Year Pic XX Date Format yy.
05 Review-M-D Pic XXXX.
PROCEDURE DIVISION での使用は、比較、移動、算術式などの演算で日付フィールドを一緒に使用する方法に関連しています。 年先行型および年単独型フィールドに互換性があるとみなされるには、日付フィールドに同じ数の年以外の文字が含まれている必要があります。 例えば、DATE FORMAT YYXXXX を持つフィールドは、同じ日付形式の別のフィールドや YYYYXXXX フィールドと互換性がありますが、YYXXX フィールドとの互換性はありません。
年末尾型日付フィールドの場合は、DATE FORMAT 節が同じである必要があります。特に、ウィンドウ表示日付フィールドと拡張年末尾型日付フィールドとの相互演算は許されません。 例えば、日付形式が XXXXYY の日付フィールドを別の XXXXYY 日付フィールドへ移動させることはできますが、 XXXXYYYY 形式の日付フィールドへ移動させることはできません。
演算の中の日付フィールドに互換性があれば、日付フィールドに対して、または日付フィールドと非日付が組み合わされたものに対して演算を実行できます。例えば、次のように定義されているとします。
01 Date-Gregorian-Win Pic 9(6) Packed-Decimal Date Format yyxxxx. 01 Date-Julian-Win Pic 9(5) Packed-Decimal Date Format yyxxx. 01 Date-Gregorian-Exp Pic 9(8) Packed-Decimal Date Format yyyyxxxx.
2 つのフィールドの年以外の数字の数が異なるので、次のステートメントは成立しません。
If Date-Gregorian-Win Less than Date-Julian-Win . . .
2 つのフィールドの年以外の数字の数が同じなので、次のステートメントは受け入れられます。
If Date-Gregorian-Win Less than Date-Gregorian-Exp . . .
この場合は、比較が確実に意味のあるものになるようにするために、世紀ウィンドウがウィンドウ表示日付フィールド (Date-Gregorian-Win) に適用されます。
非日付を日付フィールドと一緒に使用した場合、非日付は日付フィールドと互換性があると見なされるか、または単純な数値として扱われます。