当前位置: 首页 > 知识库问答 >
问题:

可变记录长度的Cobol索引文件

谯灿
2023-03-14

我有一个没有COBOL构建的COBOL索引文件。现在我必须创建一个FD来打开和读取COBOL中的记录。

唱片有一个固定长度的键部分。我也有一个数据部分。两个字段的长度可变。此字段的长度存储在记录的其他字段中。

文件描述如下所示:

FD ind-file
  01 FD-REC.
    03 FD-KEY.
      05 key1 PIC 9.
      05 key2 PIC 9.
    03 FD-DATA.
      05 data-length1 PIC9(03).
      05 data1       ???? (length depending on data-length1)
      05 data-length2 PIC9(03).
      05 data2       ???? (length depending on data-length2)

显然这行不通。有人知道我应该如何配置这个文件来打开它吗?

我应该在文件控件中定义这些可变记录大小吗?

共有1个答案

仲涵亮
2023-03-14
FD  ind-file
01  FD-REC.
    03 FD-KEY.
      05 key1                            PIC 9.
      05 key2                            PIC 9.
    03 FD-DATA.
      05 data-length1                    PIC 9(03).
      05 data1.
        07  FILLER OCCURS 0 TO 999 TIMES
            DEPENDING ON data-length1.
          09  FILLER                     PIC X.
      05 data-length2                    PIC 9(03).
      05 data2.
        07  FILLER OCCURS 0 TO 999 TIMES
            DEPENDING ON data-length2.
          09  FILLER                     PIC X.

这应该符合你的定义。算是吧。

问题是data-length2“位置可变”。太蠢了。应该在记录的固定部分。

因此,对于一个符合1985年标准的COBOL编译器来说,发生的情况取决于你是否卡住了。您应该更改记录布局。

如果出于某种奇怪的原因,这是不可能的,那么您需要定义一个新字段(在WORKING-STORAGE或LOCAL-STORAGE中),将data-length2移动到该字段。

显然,在上面的示例中,您将填充PIC Xs替换为表项所需的任何定义,以及时间的最大值(我刚刚使用了PIC 9(3)可能使用的最大值)

缩进和间距使代码更易于阅读。

 类似资料:
  • 我有一个需求,我需要将包含可变长度记录的文件转换为固定长度记录。这是一个来自大型机的文件。 因为我不能访问大型机上的文件,所以我需要一个示例可变长度记录文件和一种转换为固定长度记录的方法。 我对这种文件是完全陌生的。但是如果我知道如何将这些可变长度的记录映射到固定长度的记录,我可以用Java编码。 这就是我的字段的位置: 所以我期待这样的输出:

  • 问题内容: 我有一张这样的桌子: 和这样的一个: 和这样的SQL语句 如果我解释给我这个: 对于一百万行,这非常慢。我尝试使用以下方法在products.name上添加索引: 这给出了: 我认为Sub_part列显示已在索引中(以字节为单位)的前缀,如本页中所述。 当我重新解释查询时,我得到: 看起来好像没有使用新索引。如 本页所述,如果索引是前缀索引,则不会用于排序。实际上,如果我用以下方法截断

  • 问题内容: 我有一个带有列的表,其中包含如下所示的字符串。 我需要从第二次出现到字符串结尾获取子字符串,并且您可以看到子字符串的长度不是固定的。第一部分并不总是固定的,它可以改变。到目前为止,我正在使用以下代码来实现它。 如您所见,我采用一个任意大的值作为长度来处理可变长度。有更好的方法吗? 问题答案: 您可以与函数结合使用,找到的最后一次出现,还可以使用从字符串末尾获取指定数量的字符。 SQLF

  • 我试图读取一个csv文件,并将其设置为转换为另一种格式,以节省一些工作时间,但当一行的长度小于预期列时,我正在加载它的JTable会引发异常。如果行长度<列长度,是否有方法创建空单元格? 因此,您可以看到getValueAt(int row,int col)方法,如果col超过String[].length将导致错误。

  • 问题内容: 我正在尝试获取新的数据集,或将当前数据集列的值更改为其唯一值。这是我尝试获得的示例: 我不太在乎索引,但这似乎是问题所在。到目前为止,我的代码非常简单,我尝试了两种方法,一种是使用新的dataFrame,另一种是不使用。 两次都出现错误“值的长度与索引的长度不匹配”。 问题答案: 当您尝试向数据帧分配不同长度的numpy数组列表时,会出现此错误,并且可以按以下方式重现该错误: 四行数据

  • 我正在尝试合并两个MP3文件到一个单一的MP3文件。文件保存在SD卡中,但无法播放。首先,我将MP3转换成存储在文件夹中的WAV文件,并输出到SD卡上。它还给出了。