我的SQLRPGLE程序有问题,该程序必须在表中插入记录。
我一直在用strdbg命令调试程序,我发现问题是由于在试图将值插入整数字段时,数据结构中一个名为Mes的压缩十进制字段引起的。
源数据结构定义(DS中的第一个字段是表面上需要转换的字段:]
D DataDS DS QUALIFIED TEMPLATE
D Mes 6P 0
D Unidad 2P 0
D Subunidad 3P 0
D Grupopas 8P 0
D Productor 8P 0
D Asegurado 9P 0
. . .
. . .
. . .
目标字段是整数。
P Exportar...
P B
D PI
D data DS LIKEDS(DataDS)
/free
ClrBI();
CLEAR data;
EXEC SQL DECLARE B1 CURSOR FOR
SELECT MES,UNIDAD, SUBUNIDAD, GRUPOPAS,
PRODUCTOR, ASEGURADO, RAMA, TIPO_MOVIM,
SUCURSAL,IFNULL(FACULTATIV,' '), CONDIC_IVA,
UNIDAD_FC, SUBUNID_FC, GRUPOPR_FC,
MATRICULA, CANALCOBRO, IFNULL(CANALCOBRX,' '),
PRIMACOB, PREMIOCOB, DEREMICOB,
RECADMCOB, RECFINCOB, IVACOB,
PER_IVACOB, ACR_IVACOB, ISSCOB,
INTERNOCOB, PER_IBRCOB, COMISICOBR,
COMISIAGEN,COMISIORGA,COMISIOTRS
COMISITOT
FROM BICOBRANZA
WHERE MES = :mes;
EXEC SQL OPEN B1;
EXEC SQL FETCH NEXT FROM B1 INTO :data;
DOW SQLCOD = 0;
SetBI(data);
CLEAR data;
EXEC SQL FETCH NEXT FROM B1 INTO :data;
ENDDO;
EXEC SQL CLOSE B1;
/end-free
P E
这是我第一次看到这样的错误。有人遇到过这个问题吗?我什至不知道从哪里开始。
提前感谢。
不带小数位的6位数字(6P 0)的值范围为-999999至999999。
小整数列的值范围为-32768到32767。
只要您打包的字段值合适,铸造就可以正常工作。
您需要使DB列为大(4字节(10位数字))或大(8字节(20位数字))整数。