2011-09-27 5 views
2

내 COBOL pgm에 하나의 배열이 정의되어 있습니다. 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로 설정하고, A-LIST-VALUE (A-IDX)에 'XYZ'를 이동하고있다. A-TABLE을 표시하는 동안 XYZ ------------------------------ 및 모든 공백으로 표시됩니다. :( 나는 문제가 여기에 무엇을 얻고 있지 않다? 이 사람이 나에게이 문제를 해결하는 데 도움이 수 있습니까?

안부, Saisha을.

답변

3

당신은 테이블에 대해 그런 식으로 값을 설정할 수 없습니다. 값을 설정하는 방법 중 하나를 테이블의 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). 

꽤 성가신 즉. Anoth er 메서드는 런타임에 초기화 단락에서 데이터를 이동하는 것입니다.

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 문이 있습니다.

+0

나는 배열 색인이 설정되는 방식에 문제가 있다고 생각하지 않는다. 움직이는 문제는 ... 그렇게 생각하지 않아? –

+0

나는 배열 색인에 문제가 없다는데 동의한다. 문제는 테이블 엔트리의 VALUE 절에 있다고 생각합니다. 초기화의 일종의 작동하지 않습니다, 그리고 나는 그것이 컴파일 오류를 생성하지 놀랐어요. – cschneid

+0

값이 FILLER에 대해 표시되었으므로 –

0

"XYZ"만 이동 한 경우 내 질문에 "XYZ < 27 공백>"이 표시됩니다. 그렇다면 initialize을 이동하고 다른 변수를 표시하거나 이동하기 전에 trim 공백을 사용해야합니다.

문제가 아직 해결되지 않은 경우 해결 방법을 많이 알려주십시오.