分配给主变量时如何截断 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

猜你喜欢