COBOL语言中图片子句的概念是什么以及为什么这很重要?
<style>
@page {
margin-top: 200pt;
}
</style>
这里的等级(01)的含义是什么,01与05不同。
答案 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.
它们都可以用于实现相同的功能,因此您使用哪一个将真正依赖于您希望在程序中使用的数据。