各种数据级别之间有什么区别

时间:2017-11-24 10:32:08

标签: cobol

COBOL语言中图片子句的概念是什么以及为什么这很重要?

<style>
    @page {
        margin-top: 200pt;
    }
</style>

这里的等级(01)的含义是什么,01与05不同。

1 个答案:

答案 0 :(得分:4)

所以COBOL中的所有内容基本上都是数据的“块”。定义变量的方式决定了如何在程序中访问它们。无论何时你看到变量的级别变高,你都在处理组变量,所以这里是基本变量和组变量之间差异的一个例子。

01 WS-DATE PIC X(10) VALUE '2017-11-24'.

这是一个基本项目,因为它下面没有更高级别的变量。我可以使用相同的日期字段,并通过更改我的变量定义使其成为一个组项目

01 WS-DATE
   05 WS-YEAR  PIC X(4) VALUE '2017'.
   05 FILLER   PIC X    VALUE '-'.
   05 WS-MONTH PIC XX   VALUE '11'.
   05 FILLER   PIC X    VALUE '-'.
   05 WS-DAY   PIC XX   VALUE '24'.

所以现在在我的程序中,我有更多的选择。我现在可以使用该日期的任何部分以及整个日期。如果我DISPLAY WS-DATE它将显示整个日期,但由于我如何构建工作存储空间,我现在可以只显示年,月或日。

所以基本上如果你引用一个数据项,你实际上是将它与它下面的每个更高级别的数据项一起使用。

所以回答你的问题,各级之间确实没有区别。它们实际上只是指示数据结构(88个级别变量除外,它们用作标志)。

现在回到原来的例子。您的示例实际上无法编译,因为您不能拥有带有picture子句的组数据项。 picture子句将数据定义为数字,字母数字,国家等...因此,当您创建组级别项目时,其下方的数据项可以有任何组合和大小。编写示例的“正确”方法是:

01 X PIC 9(3) VALUE 2.
01 Y PIC 9(3) VALUE 3.

01 WS-STUFF.
   05 X PIC 9(3) VALUE 2.
   05 Y PIC 9(3) VALUE 3.

或者

01 X PIC 9(3) VALUE 2.
01 Y.
   05 FILLER PIC 9(3) VALUE 3.

它们都可以用于实现相同的功能,因此您使用哪一个将真正依赖于您希望在程序中使用的数据。