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

用于DB2日期算法的COBOL变量的定义,db2,cobol,Db2,Cobol,在某些情况下,我希望从时间戳中添加或减去可变天数 最简单的例子如下: 选择当前时间戳-:MOD-DAY 输入:MYTIMESTAMP 来自SYSIBM.SYSDUMMY1 我的问题是为MOD-DAY找到正确的cobol定义 据我所知,我们正在运行DB2Version11 根据 变量的DB2定义必须是DECIMAL(8,0) 这可能是9(08)或S9(08),但在这两种情况下,以及我迄今为止想到的任何其他变体,我都会得到编译错误 DSNH312I E DSNHSMUD行1181列49未定义或无法

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

最简单的例子如下:

选择当前时间戳-:MOD-DAY
输入:MYTIMESTAMP
来自SYSIBM.SYSDUMMY1
我的问题是为
MOD-DAY
找到正确的cobol定义
据我所知,我们正在运行DB2Version11

根据
变量的DB2定义必须是
DECIMAL(8,0)

这可能是
9(08)
S9(08)
,但在这两种情况下,以及我迄今为止想到的任何其他变体,我都会得到编译错误
DSNH312I E DSNHSMUD行1181列49未定义或无法使用主机变量“MOD-DAY”

我当然已经确定了
MOD-DAY
的定义,因此关键字必须是
UNUSABLE

DSNH312I
的错误代码定义非常通用:


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

Decimal
在Mainframe-DB2中表示comp-3

因此,该字段应定义为
S9(08)comp-3



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

Decimal表示
comp-3
。请尝试
s9(08)comp-3
查看DB2表/视图的DB2 dclgens副本。它们将显示DB2定义以及如何将其转换为Cobol。找到一个十进制字段,然后查看Coboldefinition@BruceMartin:谢谢你,这就成功了。提交它作为一个答案,我将接受它作为一个答案,IBM生产的DCLGEN将显示S9(8)V用法COMP-3。我不确定“V”是否重要。@JimCastro:
s9(08)comp-3
结果足够了,可能是因为
DECIMAL(8,0)
在小数点后没有任何意义