CPF4131在OPEN期间出现在文件中

时间:2013-05-27 04:28:13

标签: ibm-midrange rpgle

CPF4131出现在程序文件中的可能原因是什么?

我们如何解决这个问题?

 Message . . . . : Error message CPF4131 appeared during OPEN for file 
 TEST (C S D F). 

Cause . . . . . : RPG procedure TEST2 in program TESTLIB/TEST2
received the message CPF4131 while performing an implicit OPEN operation on 
file SOURCE. The actual file is SOURCE. 

2 个答案:

答案 0 :(得分:15)

这是一个record format level check。这意味着您打开的文件中的记录格式与编译程序时找到的格式级别ID不同。换句话说,记录中字段的布局有所不同。也许您的文件布局已经更改,如果是这样,那么您可能需要重新编译您的RPG程序。

ID计算为数字&的哈希值。记录中所有字段的顺序,以及它们的名称以及可能影响程序如何从记录缓冲区存储或检索字段的任何属性。因此,字段名称,数据类型,长度,字段位置是可以影响ID的示例,但列标题或字段文本不会。

通常,您需要了解如何查看作业日志以查看先前的消息,以查看导致问题的原因。 DSPJOB或WRKJOB可能是最常用的方法,选择选项10,然后按F10查看低级消息,& F18(班次F6)转到列表的末尾,然后翻页。

答案 1 :(得分:3)

想象一个名为ARINQDSP的工作站文件和一个名为ARINQ的RPG程序。如果你编辑ARINQDSP,比如在显示器上添加一个新字段并编译它,你就会有一个新的记录格式(如@WarrenT所解释的那样。如果你调用ARINQ,操作系统将比较存储在程序中的记录格式。发布存储在文件中的实际记录格式。它们不同,因此发布了CPF4131。重新编译RPG程序会将当前记录格式ID存储在程序对象中(以及当前缓冲区布局!),CALL ARINQ现在将按预期执行这是级别检查错误的最常见原因。

还有另一个原因:库列表不匹配。想象一下与上面相同的事件序列,只是这次想象在开发库中完成工作。您已经更改了ARINQDSP并重新编译了文件和程序。您在图书馆列表的顶部有开发。现在你这样做:CALL PRODUCTION / ARINQ。操作系统将调用生产库中的原始程序,但由于库列表,它将尝试从开发库中打开ARINQDSP。存储在生产程序中的记录格式ID与存储在开发库的工作站文件和boom:level check中的记录格式级别ID不匹配。