SQLRPGLE无法插入记录-尝试将打包的十进制插入整数字段时发生转换错误

我在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

这是我第一次看到这样的错误。 有人遇到过这个问题吗?我什至不知道从哪里开始。

谢谢。

pennyq 回答:SQLRPGLE无法插入记录-尝试将打包的十进制插入整数字段时发生转换错误

没有小数位的6位数字(6P 0)的值范围为-999999到999999。

一个小的整数列的值范围为-32768到32767。

只要您的打包字段值合适,铸造就可以正常工作。

您需要将DB列设置为大(4字节(10位数字))或大(8字节(20位数字))整数。

本文链接:https://www.f2er.com/3149438.html

大家都在问