在COBOL中填充数组时发出问题

时间:2011-09-27 11:19:38

标签: cobol mainframe

我的情况非常奇怪。我在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。

2 个答案:

答案 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

如果您的问题尚未解决,请详细说明,告诉我们如何解决问题。