用于 DB2 日期算法的 COBOL 变量的定义

Definition of COBOL variable to use for DB2 date arithmetic

在某些情况下,我想从时间戳中添加或减去可变天数。

最简单的例子是这样的:

SELECT CURRENT_TIMESTAMP - :MOD-DAY DAY
INTO :MYTIMESTAMP        
FROM SYSIBM.SYSDUMMY1                  

我的问题是找出 MOD-DAY 的正确 Cobol 定义。
据我所知,我们是 运行 DB2 版本 11。

根据https://www.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/sqlref/src/tpc/db2z_datearithmetic.html
变量的 DB2 定义必须是 DECIMAL(8,0)

可能是 9(08)S9(08) 但在这两种情况下,以及我到目前为止想到的任何其他变体,我都会收到编译错误 DSNH312I E DSNHSMUD LINE 1181 COL 49 UNDEFINED OR UNUSABLE HOST VARIABLE "MOD-DAY"

我当然确定了MOD-DAY已经定义好了,所以关键词一定是UNUSABLE

DSNH312I 的错误代码定义非常通用:
https://www.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/msgs/src/tpc/dsnh312i.html

那么有人知道在这种情况下要使用的正确 COBOL 变量定义吗?

Decimal 在 Mainframe-DB2 中表示 comp-3.

所以字段应该定义为S9(08) comp-3


如果您查看 DB2 为 DB2 表/视图生成的 Cobol Copybooks,您将看到 DB2 定义和生成的 Cobol 字段。这可能是解决此类查询的另一种方法