Проблема при заполнении массива в COBOL - PullRequest
3 голосов
/ 27 сентября 2011

У меня очень странный сценарий. У меня есть один массив, определенный в моей программе COBOL.

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 ]

4 голосов
/ 27 сентября 2011

Вы не можете установить значения для таблицы таким образом.Один из способов установить значения в таблице - использовать 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 или выше и пытаетесь создать XML в COBOL, существует оператор XML GENERATE.

0 голосов
/ 28 сентября 2011

Насколько я понимаю, ваш вопрос заключается в том, почему «XYZ <27 пробелов>» отображается, когда перемещается только «XYZ».Если это так, вам нужно initialize перед перемещением и trim пробелы перед отображением или перемещением в другую переменную.

Если ваша проблема еще не решена, опишите многое, иначе сообщите нам, как она была решена.

...