Ibm midrange CPF4131在文件打开期间出现

Ibm midrange CPF4131在文件打开期间出现,ibm-midrange,rpgle,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 O

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. 
这是一个好主意。这意味着要打开的文件中的记录格式与编译程序时发现的格式级别ID不同。换句话说,记录中字段的布局有所不同。也许您已经更改了文件布局,如果是这样,那么您可能需要重新编译您的RPG程序

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


一般来说,您需要学习如何查看作业日志,查看以前的消息,以了解是什么导致了问题。DSPJOB或WRKJOB可能是最常用的方法,选择选项10,然后按F10查看低级消息,&F18(shift F6)转到列表的末尾,然后进行页面备份。

想象一个名为ARINQDSP的工作站文件和一个名为ARINQ的RPG程序。如果您编辑ARINQDSP,比如说在显示中添加一个新字段,并对其进行编译,您将拥有一个新的记录格式(如@WarrenT所述。如果调用ARINQ,操作系统会将程序中存储的记录格式与文件中存储的实际记录格式进行比较。两者不同,因此会发出CPF4131。重新编译RPG程序会将当前记录格式ID存储在程序对象中(以及当前缓冲区布局!)现在,调用ARINQ将按预期执行。这是导致级别检查错误的最常见原因


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

原因在CP中给出F4131消息本身。@user2338816这不是很有帮助,是吗?这是一个很好的问题,我花了很长时间试图解决这个问题。@CodeAssist,这取决于透视图。CPF4131消息显示在作业日志的文本行中就在粘贴的文本之前。只需查看它。它包含标记为“消息”、“原因”和“恢复”的部分。阅读这些部分要比撰写和提交问题、等待各种可能冲突和/或混淆的答案快得多。如果文本不清楚,那么这是一个非常好的时机。I完全忘记了这一切!最明显的快速修复方法是用新的DSPF重新编译程序!很久没有做RPG了,忘了你必须这么做。