我正在尝试使用 DISPLAY 输出以下行,并且在 Visual Studio 和 Tutorialspoint COBOL 编译器中的 Micro Focus COBOL 中获得了正确的结果,但是在使用 IBM 的 Enterprise COBOL 在 z/OS 大型机上运行它时有些奇怪:
01 W05-OUTPUT-ROW.
05 W05-OFFICE-NAME PIC X(13).
05 W05-BENEFIT-ROW OCCURS 5 TIMES.
10 PIC X(2) VALUE SPACES.
10 W05-B-TOTAL PIC ZZ,ZZ9.99 VALUE ZEROS.
05 PIC X(2) VALUE SPACES.
05 W05-OFFICE-TOTAL PIC ZZ,ZZ9.99 VALUE ZEROS.
在 Enterprise COBOL 中显示空格被忽略,并且添加了一个额外的零填充列,即使 PERFORM VARYING 和 DISPLAY 代码在两个版本中完全相同:
PERFORM VARYING W02-O-IDX FROM 1 BY 1
UNTIL W02-O-IDX > W12-OFFICE-COUNT
MOVE W02-OFFICE-NAME(W02-O-IDX) TO W05-OFFICE-NAME
PERFORM 310-CALC-TOTALS VARYING W02-B-IDX FROM 1 BY 1
UNTIL W02-B-IDX > W13-BENEFIT-COUNT
MOVE W02-O-TOTAL(W02-O-IDX) TO W05-OFFICE-TOTAL
DISPLAY W05-OUTPUT-ROW
END-PERFORM
W13-BENEFIT-COUNT 是 5 并且在程序中永远不会改变,所以第 6 列对我来说是个谜。
正确的输出:
奇怪的输出:
编辑:根据要求,这里是 W02-OFFICE-TABLE:
01 W02-OFFICE-TABLE.
05 W02-OFFICE-ROW OCCURS 11 TIMES
ASCENDING KEY IS W02-OFFICE-NAME
INDEXED BY W02-O-IDX.
10 W02-OFFICE-CODE PIC X(6).
10 W02-OFFICE-NAME PIC X(13).
10 W02-BENEFIT-ROW OCCURS 5 TIMES
INDEXED BY W02-B-IDX.
15 W02-B-CODE PIC 9(1).
15 W02-B-TOTAL PIC 9(5)V99 VALUE ZERO.
10 W02-O-TOTAL PIC 9(5)V99 VALUE ZERO.
并且 W12-OFFICE-COUNT 始终为 11,永不改变:
01 W12-OFFICE-COUNT PIC 99 VALUE 11.