2

这里非常基本的问题。

我必须为 COBOL 程序编写数据词汇表。该数据词汇表包含有关每个变量的以下详细信息:

  1. 姓名
  2. 数据类型
  3. 值范围(如果适用)
  4. 行号
  5. 全名

我有几个变量,包括 88 级开关。我的问题是:这些 88 级开关是否算作变量,我应该将它们包含在数据词汇表中吗?或者,从我必须使用的数据词汇表结构来看,在这种情况下是否应该忽略它们?

当我在这里时,另一个简单的问题。填充词是否应该包含在数据词汇表中?这个程序特别包含很多填充变量,大多数是简单的“PIC X”变量。

4

3 回答 3

7

假设我理解被问到的问题。

如果您可以举一个带有 COBOL 布局和数据词汇表条目的示例,一个有 88 条目,一个没有 88 条目,将会有所帮助。不过,我会尽力回答这个问题。

不,88 级条目不是变量,它们不会增加或减少记录的长度。它们只是允许您创建条件语句。

话虽如此,您的数据词汇表是否应该只包含有助于记录长度的变量?

如果是,那么每个 88 项不应有单独的数据词汇表条目。但是,它可能有助于解释给定变量的值 [s](3 甚至 5 甚至是预期值的额外行)。

01 record-store.
 02 location pic 9(4).
   88 dist-center value 100, 101, 102.
 02 value    pic 9(6).
 02 paid     pic X(1).
   88 yes value 'Y', 'y'.
   88  no value 'N', 'n'.

您的数据词汇表将/可能是:

地点

  • 名称:地点
  • 数据类型:整数
  • 取值范围:0-9999
  • 行号:20
  • 全名:数据的位置
  • 预期值:
    • 100、101、102 用于配送中心
    • 1-99为客户
    • 103-9999 无效

现在知道了您的预期值,您可能会返回并更改您的 88 值?

...
 02 location pic 9(4).
   88 dist-center value 100, 101, 102.
   88 customers   value 1 thru 99.
   88 invalid     value 0, 103 thru 9999.
...    

如果没有,那么:

您可以在 88 级条目之前有一个单独的数据词汇表条目。

您的数据词汇表将/可能是:

地点

  • 名称:地点
  • 数据类型:整数
  • 取值范围:0000-9999
  • 行号:20
  • 全名:数据的位置

中心

  • 名称:中心
  • 数据类型:布尔值
  • 取值范围:100、101、102
  • 行号:5
  • Fuller Name:地点是配送中心吗

顾客

  • 姓名:客户
  • 数据类型:布尔值
  • 取值范围:1-99
  • 行号:5
  • 全名:位置是客户吗

无效的

  • 名称:无效
  • 数据类型:布尔值
  • 取值范围:0001、0010、0100
  • 行号:5
  • 全名:位置是否是无效值
于 2012-09-02T07:24:01.123 回答
1

'PIC X' FILLER 变量可能是 88 级工作存储中的标志,因此非常重要。

例如,我们经常使用这种类型的构造:

01 FILLER                     PIC X.
    88 OPTION-IS-ON        VALUE 'Y', FALSE 'N'.
    88 OPTION-IS-OFF       VALUE 'N'.

这定义了一个我们只使用它的条件引用的标志。例如,我们可能会这样使用它:

SET OPTION-IS-ON TO TRUE.     | This puts a 'Y' in the PIC X
   .
   .
   .
IF OPTION-IS-ON
   do something
END-IF

在这种情况下,我们永远不需要引用实际的标志值本身,因此您不需要给它命名。

88 级中的 'FALSE' 只允许您指定使用语句时存储的内容:

SET OPTION-IS-ON TO FALSE     | This puts an 'N' in the PIC X

这当然与说:

SET OPTION-IS-OFF TO TRUE     | This also puts an 'N' in the PIC X

这一切都取决于当时什么更具可读性。

于 2012-10-10T23:42:30.500 回答
1

像往常一样,这取决于。:-)

88 级值似乎属于第 3 部分“值范围”,特别是如果它们记录了某些变量允许的唯一值。

如果文档用于重建记录,则 FILLER 字段当然很重要。如果您只是想记录其他字段的用法,它们并不是很有趣。

于 2012-09-01T12:16:40.437 回答