兼容日期
术语 兼容日期 的含义取决于用法是在 DATA DIVISION 还是 PROCEDURE DIVISION中出现。
DATA
DIVISION 的用法涉及日期字段的声明,以及管理 COBOL 语言元素(如从属数据项和 REDEFINES 子句)的规则。 在以下示例中, Review-Date 和 Review-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) ,以确保比较有意义。
将非日期与日期字段结合使用时,将假定该非日期与日期字段兼容,或者将其视为简单数字值。