如何截斷將 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
廣告