COBOL Report Writer中DECLARATIVES段可否引用SUM子句绑定的列?
COBOL Report Writer SUM项引用问题解答
规范返回值
按照COBOL标准规范,DECLARATIVES段的USE BEFORE REPORTING过程中,正确引用S-MM的话应当返回当前控制分组的SUM汇总结果126。
0值问题原因
你遇到的返回0的情况,不是因为SUM汇总结果尚未写入S-MM,而是由COBOL的变量作用域规则导致:
- 控制脚注
CF-MM下属的S-MM是报表栏内部的SUM项,这类报表项的作用域默认仅限报表定义本身,过程部直接引用S-MM时,默认指向工作存储节中定义的同名变量 - 如果你没有在工作存储节显式定义过
S-MM变量,程序会读取该名称对应的默认初始值0,也就是你看到的输出结果 - 补充背景:
USE BEFORE REPORTING触发的时机是对应控制脚注渲染前,此时该分组所有SUM项已经完成计算,不存在汇总未完成的问题。
修正方案
如果要在声明段中读取报表栏内部的SUM项,需要添加报表栏限定符,修改DISPLAY语句如下即可正常输出126:
DISPLAY "SUM MM LEVEL:" S-MM OF CF-MM
部分编译器也支持S-MM IN CF-MM的等效写法。
内容的提问来源于stack exchange,提问作者NoChance
相关产品推荐
相关产品推荐

