首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPG编译错误

RPG编译错误
EN

Stack Overflow用户
提问于 2017-01-24 00:21:05
回答 3查看 2.2K关注 0票数 2

当我编译一个RPG程序时,我得到如下所示的错误:

代码语言:javascript
复制
*RNF7408 30      1 The length of the input field does not match the definition of the field; specification is ignored.

此错误中提到的字段是EXITAX,它在WR654F中的大小为15.2,在DA595F中的大小为9.2。我假设这是因为两个文件(WR654F和DA595F)有一个字段具有相同的名称(EXITAX),但在F规范中声明了不同的大小:

代码语言:javascript
复制
FWR654F    IF   E             DISK
FDA595F    O  A E           K DISK

但是,当我为了编译而使用上述两个规范和*inlr = *on创建另一个程序时,它工作得很好,并且编译成功。所以我不明白为什么原始程序不能编译?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-24 00:50:35

我能够重现错误,并成功编译。您的断言是正确的,即错误是由于字段在两个文件中的定义不同而引起的。但是,当您仅使用文件定义和return或*INLR = *ON进行编译时,它不会出现。显然,RPG编译器不会尝试为DA595F生成O规范,除非您实际写入该文件。因此,在您的测试中,您需要向输出记录添加一个write操作。然后,您将看到错误。

以防你的下一个问题是,“我该怎么解决它?”一种方法是对数据结构进行读写。如下所示:

代码语言:javascript
复制
   dcl-ds file1ds        LikeRec(file1r: *input) Inz;
   dcl-ds file2ds        LikeRec(file2r: *output) Inz;

   read file1 file1ds;
   eval-corr file2ds = file1ds;
   write file2r file2ds;
票数 3
EN

Stack Overflow用户

发布于 2017-01-24 22:59:22

要防止RPG生成I和O规范,请将QUALIFIED关键字添加到文件中。这也会导致记录格式被文件名限定。因此,您可以写入DA595F.DA595FMT,而不是写入DA595FMT。

票数 2
EN

Stack Overflow用户

发布于 2017-01-26 00:20:34

限定方法更好地避免了结构冲突,并从不必要的数据结构声明中节省了资源。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41810892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档