gpt4 book ai didi

cobol - 当列与 COBOL REPORT WRITER 模块中的 SUM 子句一起使用时,您能否引用 DECLARATIVES 部分中的列?

转载 作者:行者123 更新时间:2023-12-04 12:30:16 25 4
gpt4 key购买 nike

除了特定平台和编译器之外,假设您使用报表编写器模块在 COBOL 程序中定义了它:

01 CF-MM TYPE CONTROL FOOTING WS-MM.
02 LINE PLUS 1.
03 COLUMN 1 VALUE "* CF MONTH: ".
03 COLUMN PLUS 1 PIC 99 SOURCE WS-MM.
03 S-MM COLUMN PLUS 5 PIC S9(4)V99 SUM WS-TUTION-PAY.
03 VAL-NN COLUMN PLUS 5 PIC S9(4)V99 SOURCE S-MM.
<...>
PROCEDURE DIVISION.
DECLARATIVES.

SEC2 SECTION.
USE BEFORE REPORTING
CF-MM.
DISPLAY "SUM MM LEVEL:" S-MM
.

此外,假设程序报告了 3 行,其中 SUM WS-TUTION-PAY 结果为 126。

SEC2 SECTION 中显示 S-MM 值的语句产生的值是多少?我想它应该是 126,但我显示的是零。这可能是因为值 126 尚未移至 S-MM,但我不确定。

在 S-MM 的声明部分“应该”显示的值是什么

最佳答案

问: 当列与 COBOL REPORT WRITER 模块中的 SUM 子句一起使用时,您能否引用 DECLARATIVES 部分中的列?

03 S-MM COLUMN PLUS 5   PIC S9(4)V99 SUM WS-TUTION-PAY. 

S-MMentry-name 子句的data-name 格式。引用自 2002 COBOL 标准,报告组描述条目,13.13.2 语​​法规则:

7) The data-name format of the entry-name clause shall be specified when the data-name is referenced in a GENERATE statement, a USE BEFORE REPORTING statement, as a qualifier for a SUM counter, in the UPON phrase of the SUM clause, or as an operand in a SUM clause. The data-name shall not be referenced in any other way.

鉴于 S-MM 符合条件,它可能被引用为“作为 SUM 计数器的限定符”。

[COBOL 74 和 85 标准指出,“Data-name-1 是可选的,但可以在任何条目中指定。但是,Data-name-1 只能在条目定义求和计数器时引用。”]

我用于以下代码的编译器是 Micro Focus COBOL 85。


代码:

   program-id. rw-test.
environment division.
input-output section.
select report-file assign "rpt.txt"
organization line sequential.
data division.
fd report-file
report is report-1.
working-storage section.
01 n comp pic 99 value 0.
01 test-table.
02 test-data.
03 pic 9999 value 1001.
03 pic 9999 value 1002.
03 pic 9999 value 1003.
03 pic 9999 value 2004.
03 pic 9999 value 2005.
03 pic 9999 value 2006.
02 test-entry redefines test-data pic 9999 occurs 6.
01 report-entry.
03 test-group pic 9.
03 test-value pic 999.
report section.
rd report-1
control is test-group.
01 rw-detail type de.
02 line plus 1.
03 grp column 1 pic 9 source test-group.
03 val column 4 pic zz9 source test-value.
01 rw-foot type cf test-group.
02 line plus 1.
03 column 1 pic x(6) value "- ---".
02 line plus 1.
03 column 1 pic 9 source test-group.
03 s-mm column 4 pic zz9 *> s.mm defined
sum test-value
reset test-group.
02 line plus 1 pic x value space.
procedure division.
declaratives.
decl-rpt section.
use before reporting rw-foot.
display s-mm. *> s.mm referenced
end declaratives.
main-line section.
open output report-file.
initiate report-1
perform varying n from 1 by 1
until n > 6
move test-entry (n) to report-entry
generate rw-detail
end-perform
terminate report-1
close report-file
stop run.
end program rw-test.

报告:

1    1
1 2
1 3
- ---
1 6

2 4
2 5
2 6
- ---
2 15

显示:

006
015

关于cobol - 当列与 COBOL REPORT WRITER 模块中的 SUM 子句一起使用时,您能否引用 DECLARATIVES 部分中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69590695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com