我遇到了非常奇怪的情况。我在 COBOL pgm 中定义了一个数组。
05 A-TABLE.
10 A-TABLE-LIST OCCURS 10 TIMES INDEXED BY A-IDX.
15 FILLER PIC X(7) VALUE '<TEST>'.
15 A-LIST-VALUE PIC X(30).
15 FILLER PIC X(8) VALUE '</TEST>'.
我正在设置 A-IDX=1 并将“XYZ”移动到 A-LIST-VALUE(A-IDX)。 在显示 A-TABLE 时,它显示为 XYZ----------------------------- 和所有空间... :( 我不明白这里的问题是什么? 谁能帮我解决这个问题?
问候, 赛沙。
最佳答案
您不能以这种方式为表设置值。在表中设置值的一种方法是使用重新定义和单独的数据区域。
05 A-TABLE-X.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
10 FILLER PIC X(45)
VALUE '<TEST> </TEST>'.
05 A-TABLE REDEFINES A-TABLE-X.
10 A-TABLE-LIST OCCURS 10 TIMES INDEXED BY A-IDX.
15 FILLER PIC X(7).
15 A-LIST-VALUE PIC X(30).
15 FILLER PIC X(8).
这太麻烦了。另一种方法是在运行时在初始化段落中移动数据。
05 A-TABLE REDEFINES A-TABLE-X.
10 A-TABLE-LIST OCCURS 10 TIMES INDEXED BY A-IDX.
15 A-LIST-A PIC X(7).
15 A-LIST-VALUE PIC X(30).
15 A-LIST-B PIC X(8).
PERFORM VARYING A-IDX FROM 1 BY 1 UNTIL A-IDX > 1
MOVE '<TEST> TO A-LIST-A(A-IDX)
MOVE SPACES TO A-LIST-VALUE(A-IDX)
MOVE '</TEST> TO A-LIST-B(A-IDX)
END-PERFORM
我没有尝试编译任何这些,这只是徒手写的。
附带说明一下,如果您使用的是 Enterprise COBOL 版本 3.2 或更高版本,并且您正尝试在 COBOL 中创建 XML,则存在一个 XML GENERATE 语句。
关于cobol - 在 COBOL 中填充数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7568247/