如何截断将 DB2 列数据分配给主机变量时的截断


在某些情况下,不使用 DCLGEN 成员,并且在工作存储区部分显式地完成主机变量声明。但是,由于这些显式声明,存在人为错误的可能性。其中一个错误是声明 COBOL 等效主机变量的错误数据长度。

例如,主机变量应该声明为 PIC X(24),但错误地声明为 PIC X(14)。在这种情况下,当数据从 DB2 传输到 COBOL 程序时,由于接收主机变量的长度较短,列数据可能会被截断。

我们可以使用 SQLCA 的 SQLWARN1 字段检测此类情况。SQLWARN1 是一个 1 字节字段,如果在数据传输期间有任何截断,则包含值“W”。我们可以像下面这样使用此字段。

A010-CHECK-ORDER.
EXEC SQL
SELECT ORDER_DATE
INTO :ORDER-DATE,
FROM ORDERS
WHERE ORDER_ID = :ORDER-ID
END-EXEC
EVALUATE SQLWARN1
WHEN ‘W’
DISPLAY ‘THE ORDER DATE WAS TRUNCATED’
WHEN OTHER
DISPLAY ‘ORDER DATE IS ‘ ORDER-DATE

更新于: 2020年9月14日

171 次查看

启动你的 职业生涯

通过完成课程获得认证

开始
广告