我的情况非常奇怪。我在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 ------------------------------ 和所有空间...... :( 我不知道这里有什么问题? 任何人都可以帮我解决这个问题吗?
此致 Saisha。
答案 0 :(得分:4)
您无法为该表设置值。在表中设置值的一种方法是使用REDEFINES和单独的数据区域。
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语句。
答案 1 :(得分:0)
根据我的理解,您的问题是为什么“XYZ&lt; 27 space&gt;”仅移动“XYZ”时显示。如果是这样,在显示或移动到另一个变量之前移动和initialize
空格之前需要trim
。
如果您的问题尚未解决,请详细说明,告诉我们如何解决问题。