文件记录导致程序读出现CPF5029错误.特请franliu AND passthru 看看有什么解决方案

发布于 2022-08-31 08:29:25 字数 4846 浏览 16 评论 5

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

野心澎湃 2022-09-02 00:55:14

举手之劳不用谢啦!只要明白这坛子里谁最喜欢胡说八道,自以为是成天兜售他那错误百出的blog, 不要被他误导浪费你宝贵的时间就行了 !

[ 本帖最后由 franliu 于 2009-12-2 11:28 编辑 ]

闻呓 2022-09-01 19:18:20

原帖由 franliu 于 2009-12-2 09:40 发表
先检查一下你的文件和作业的ccsid是否一致,不一致就把你的作业的ccsid改称根文件一致再运行一下试试看。

dspfd your_file, search for CCSID

chgjob press F4 and look for CCSID.

把用户的 Coded character set ID 修改成为 *SYSVAL.

问题解决. 谢谢指点迷津........

不奢求什么 2022-09-01 11:02:41

先检查一下你的文件和作业的ccsid是否一致,不一致就把你的作业的ccsid改称根文件一致再运行一下试试看。

dspfd your_file, search for CCSID

chgjob press F4 and look for CCSID.

凯凯我们等你回来 2022-09-01 07:53:05

记录字段存在字段属性不相符这个结论我同意,我的意思是存在这个问题的情况下,有什么办法在RPG里面不出错误只是读有效的记录??

独闯女儿国 2022-09-01 02:53:47

这个问题我已经与多人在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 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文