0

我在 git https://github.com/tmalaska/CopybookInputFormat/上使用CopybookInputFormat从 COBOL 副本生成配置单元表定义。我的字帖有很多填充物(重复的列),但看起来 JRecord 没有正确处理重复的列名。对于下面的字帖,当我迭代列时,JRecord 只打印第二个填充物并忽略第一个填充物。

  05 Birth-day              PIC X(002)
  05 Filler                 PIC X(008)
  05 Birth-Month            PIC X(002)
  05 Filler                 PIC X(008)
  05 Birth-year             PIC X(004)

有没有人对此有任何解决方案?我知道JRecord 0.80.6以后正在处理重复的列,但是方法getUniqueField("FIRST-NAME", "PRESIDENT")需要一个组名.. 但是如果组有重复的列怎么办?

4

1 回答 1

3

您不需要导入Filler。在 Cobol 中,不能直接访问Filler 。在 Cobol 中,填充器忽略字段(或通过其他方法访问它)。

Cobol-Copybook 就像一块内存的掩码;填充符用于跳过一些内存。

  Data         !##........##........##   (# - accessible bytes; . - inaccessible bytes)
                ^         ^         ^                               
                !         !         !
Birth-day    ---+         !         ! 
Filler                    !         ! 
Birth-Month  -------------+         !  
Filler                              !
Birth-year   -----------------------+   

填充物可用于:

  • 屏蔽不再使用的字段。
  • 重新定义中使用的掩码数据
  • 当您不需要所有字段时,创建一个简化版的字帖
  • 初始化输出字段,即
     05 报告-出生日期
        10 日图片 99。
        10 填充图片'/'。
        10 毫米图片 99。  
        10 填充图片'/'。
        10 年 yyyy 图片 9999。
  • 设置表数据
     05 代码。
        10 代码出现 5 pic 99。
     05 填充重新定义代码 pic x(10)
        值“0204050612”。

我会问你在哪里工作的Cobol 专家,这是怎么回事???。可能的答案可能是:

  • 可能不需要填充数据。
  • 您应该使用不同的更复杂的 Copybook。
  • 应使用实名填写者更新字帖。
于 2015-01-11T01:01:41.843 回答