文件记录导致程序读出现CPF5029错误.特请franliu AND passthru 看看有什么解决方案
1)当程序(RPG)使用READ读文件第一条记录之后,读第二条记录的时候出现错误.CPF5029.
2)查找资料后,认为是记录的问题.解决:在编译程序时候修改Allow null values *YES 结果:错误依然.
3)使用RGZPFM 重组文件. 结果:错误依然.
4)使用UPDDTA,在第一条记录之后,翻到第二条记录的时候.提示 A data or key conversion error occurred.
5)进入STRSQL使用SELECT查看记录,显示没有问题.其中排在第二的记录就是使用UPDDTA看到的第三条记录.
6)如果使用CHAIN去读文件是没有问题的.因为可以定位到正确的记录上面.
请问还是什么解决方法????应该怎么避免这种数据错误??
RPG程序:
C KEY01 SETLLFILE1R
C READ FILE1R 91
C *IN91 DOWEQ'0'
C*
C READ FILE1R 91 执行到这里就出现错误了.
C ENDDO
CPF5029 I/O error was detected in FILE1 (C G S D F)
Additional Message Information
Message ID . . . . . . : RPG1299
Date sent . . . . . . : 12/02/09 Time sent . . . . . . : 08:21:28
Message . . . . : CPF5029 I/O error was detected in MENH (C G S D F).
Cause . . . . . : The RPG program BOM030R in library SYS01 received the
message CPF5029 at statement 37100 while doing READ I/O operation on file
MENH. Actual file is MYLIB/FILE1 MEMBER - FILE1. See the job log for a
complete description of message CPF5029.
Recovery . . . : Enter C to cancel, G to continue processing at *GETIN, S
to obtain a printout of system storage, D to obtain an RPG formatted
printout of system storage, or F to obtain a full formatted printout of
system storage.
Possible choices for replying to message . . . . . . . . . . . . . . . :
D -- Obtain RPG formatted printout of system storage.
S -- Obtain printout of system storage.
More...
Press Enter to continue.
[ 本帖最后由 HAPPY潜龙 于 2009-12-2 08:50 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
举手之劳不用谢啦!只要明白这坛子里谁最喜欢胡说八道,自以为是成天兜售他那错误百出的blog, 不要被他误导浪费你宝贵的时间就行了 !
[ 本帖最后由 franliu 于 2009-12-2 11:28 编辑 ]
把用户的 Coded character set ID 修改成为 *SYSVAL.
问题解决. 谢谢指点迷津........
先检查一下你的文件和作业的ccsid是否一致,不一致就把你的作业的ccsid改称根文件一致再运行一下试试看。
dspfd your_file, search for CCSID
chgjob press F4 and look for CCSID.
记录字段存在字段属性不相符这个结论我同意,我的意思是存在这个问题的情况下,有什么办法在RPG里面不出错误只是读有效的记录??
这个问题我已经与多人在qq上交流过。造成这种系统报错原因,都是数据源的数据有效性问题,如pf的数据是通过前台java程序输入的。我的blog中已经有多篇关于rpgle判断参数或数据有效性的文章。
http://blog.chinaunix.net/u1/46034/showart_1987826.html
还有其它相关文章。
像你这种情况,多数是read的记录字段存在字段属性不相符的内容,如字符字段属性存放数字型的内容,或相反。
如果一定要用RPG来查看这类记录内容,只有用程序描述文件来处理。我的blog中也有RPG程序描述文件的文章。用strsql一打开这样的pf,就会系统报错。
400 db2允许异类字段属性操作,是400遗留下来的问题。可能是早期应用造成的结果。IBM也许早就意识到这个遗留bug,但是可能近百年的客户应用数据已经存在大量这类数据,只好保留这个数据通道。当然,也给现在应用系统留下错误数据源的通道。
[ 本帖最后由 passthru 于 2009-12-2 09:17 编辑 ]