如何截斷將 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 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告