COBOL:打印包含变量的行
Posted
技术标签:
【中文标题】COBOL:打印包含变量的行【英文标题】:COBOL: Printing A Line with a variable in it 【发布时间】:2015-02-01 18:06:41 【问题描述】:销售额达 10,000 人的员工人数:ZZ9
销售额从 10,001 到 20,000 的员工人数:ZZ9
这就是我想要完成的目标,其中 ZZ9 是变量。我不太确定该怎么做,我的书被偷了,所以希望能得到一些帮助。在我的工作存储部分中,我有
01 HEADING-LINE-3.
05 PIC X(03) VALUE SPACES.
05 PIC X(48) VALUE
"Number of employees with up to 10,000 in sales: "
01 HEADING-LINE-4
05 PIC X(03) VALUE SPACES.
05 PIC X(52) VALUE
"Number of employees from 10,001 to 20,000 in sales: "
在我的程序部门我有
4000-PROCESS.
WRITE REPORT-RECORD FROM REPORT-BLANK-LINE.
WRITE REPORT-RECORD FROM COLUMN-HEADING-2.
WRITE REPORT-RECORD FROM HEADING-LINE-3.
WRITE REPORT-RECORD FROM HEADING-LINE-4.
但不知道如何在这些语句的末尾添加变量。非常感谢任何和所有帮助。我像三天前一样开始使用 cobol,所以如果你能尽可能地把所有东西都弄傻,那就太好了!
【问题讨论】:
ZZ9 是一个PICTURE,它是一个变量的属性,松散地说。因此,您可以编码05 HEADING-LINE-3-COUNT PIC ZZ9.
并且您可以根据比较逻辑在您的 PROCEDURE DIVISION 中增加 HEADING-LINE-3-COUNT。简短的回答,因为你是从一开始的:再买一本你的教科书。
【参考方案1】:
只需在数据声明的末尾添加您的数字字段:
01 HEADING-LINE-3.
05 PIC X(03) VALUE SPACES.
05 PIC X(48) VALUE
"Number of employees with up to 10,000 in sales: "
05 Number-employee-to-10000 pic zzz,zz9
01 HEADING-LINE-4
05 PIC X(03) VALUE SPACES.
05 PIC X(52) VALUE
"Number of employees from 10,001 to 20,000 in sales: "
05 Number-employee-above-10000 pic zzz,zz9.
你在 2 个 comp 字段中的记录计数吗
01 ws-accumulators
03 employee-accum-1 pic s9(9) comp.
03 employee-accum-2 pic s9(9) comp.
你应该积累这些,因为数字编辑字段(图片 zz9)实际上是 文本字段不是数字(而且许多编译器无论如何都不会让你这样做)。比较字段 应该更快。
然后在程序部门中将总计移动到上面的新字段
4000-PROCESS.
Move employee-accum-1 to Number-employee-to-10000
Move employee-accum-2 to Number-employee-above-10000
WRITE REPORT-RECORD FROM REPORT-BLANK-LINE.
WRITE REPORT-RECORD FROM COLUMN-HEADING-2.
WRITE REPORT-RECORD FROM HEADING-LINE-3.
WRITE REPORT-RECORD FROM HEADING-LINE-4.
【讨论】:
您是否必须将 number-employee-to-10000 和另一个?或者您可以简单地将employee-accum-1 放在标题行的空间中 取决于您使用的 Cobol 版本。回溯 10 年,编辑数字(例如 zzz9)实际上是字符/字符串字段,您需要 2 个变量。我认为最新的标准允许进行反编辑,因此某些编译器将允许您将 1 添加到 zz9 字段。但是要给字段加 1,计算机需要将字段从字符表示形式转换为二进制整数,给它加 1,然后再转换回字符串。 @user38254 PIC 定义了字段的存储方式。只要该字段是动词的目标,就会发生任何必要的转换。将任何类型的计算字段放在打印行上不会给您带来太多可见结果(有时您会看到一些东西,但您不确定它的含义)。直接添加到数字编辑字段将非常非常不标准。 Bruce 已经指出了所需的诡计,所以希望一旦你知道更多,你甚至不会考虑它,即使你找到了一个允许它的编译器。以上是关于COBOL:打印包含变量的行的主要内容,如果未能解决你的问题,请参考以下文章
在 python 中,如何打印不包含某个字符串的行,而不是打印包含某个字符串的行: