兼容日期

术语 兼容日期 的含义取决于用法是在 DATA DIVISION 还是 PROCEDURE DIVISION中出现。

DATA DIVISION 的用法涉及日期字段的声明,以及管理 COBOL 语言元素(如从属数据项和 REDEFINES 子句)的规则。 在以下示例中, Review-DateReview-Year 兼容,因为可以将 Review-Year 声明为 Review-Date的下级数据项:


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.

以下语句不一致,因为两个字段之间的非年位数不同:


If Date-Gregorian-Win Less than Date-Julian-Win . . .

接受以下语句,因为这两个字段的非年位数相同:


If Date-Gregorian-Win Less than Date-Gregorian-Exp . . .

在这种情况下,世纪窗口将应用于窗口日期字段 (Date-Gregorian-Win) ,以确保比较有意义。

将非日期与日期字段结合使用时,将假定该非日期与日期字段兼容,或者将其视为简单数字值。