在执行到RPG程序C中,有一个CHAIN PF的动作,但是这个时候系统返回了CPF5029 data mapping error on member的错误。之后我用WRKQRY查询了CHAIN操作出错的PF,通过PF KEY定位到了RPG程序C CHAIN的那条记录后,这条记录的所有字段的值都是正常的,并没有error。
A shift-out character was found while converting to a single or mixed byte CCSID or a substitution character was found. The data could not be converted.
在JOB LOG中,除了KEY字段之外,在RPG中CHAIN PF的动作中,其中PF的大部分字段有Substitution characters may be used for field,但PF中最后1个字段没有使用substitution character。个人推测问题原因可能是:
1. 最后的几个字段没有使用substitution character,是否因为这样而导致CHAIN操作取出记录之后,因为substitution character不足,所导致取出记录失败。有没有可能对一个JOB的substitution character 数量进行设置?或者通过某种设置而避免
2.在JOB LOG中的Substitution characters may be used for field ,按F1后显示CPI431B,具体信息是Input/output mapping.The I/O field is ISEASN with CCSID836 in format RINVMST.The final CCSID required for the I/O field is 37。是否可能是substitution characters 与 field 之间的CCSID不一样所导致的问题?作者: demoneyes9 时间: 2009-07-04 14:44
找到问题所在了!
公司换了台新的400之后,系统参数QCCSID是65535,所以JAVA连接400的程序JOB的默认CCSID 37,而PF的CCSID是935。
CPF5035中的有一句“The data could not be converted"可能就是指935无法转换至37。