알려진 다중 발생 요소에 액세스

메시지 컨텐츠를 작성하거나 참조할 때, 데이터가 반복 필드를 포함하기 쉽습니다. 반복 필드의 인스턴스 수를 알고 있으며 이러한 필드의 특정 인스턴스에 액세스하려는 경우 배열 색인을 필드 참조의 일부로 사용할 수 있습니다.

예를 들면, 주소의 첫 행에서 필터하여 순서를 빠르게 전달할 수 있습니다. 요소 Billling.Address의 세 인스턴스가 항상 샘플 메시지에 표시됩니다. 첫 줄을 테스트하려면, 다음과 같이 표현식을 쓰십시오.

IF Body.Invoice.Customer.Billing.Address[1] = 'Patent Office' THEN
      DO;
          -- more ESQL --
        END IF;   

배열 색인 [1]은 관심이 있는 반복 필드의 첫 번째 인스턴스임을 나타냅니다(배열 색인이 1부터 시작함). 이와 같은 배열 색인은 필드 참조에서 어느 지점에서나 사용할 수 있으므로 예를 들면, 다음 테스트에서 필터할 수 있습니다.

IF Body.Invoice."Item"[1].Quantity > 2 THEN
      DO;
          -- more ESQL --
        END IF;   

특정 [<] 배열 색인을 사용하여 반복 필드의 최종 인스턴스를 작성하고, 다음과 같이 최종 인스턴스에 상대적인 인스턴스에 대한 특정 참조를 작성할 수 있습니다.

또한 배열 색인 [>]를 사용하여 첫 번째 요소를 나타내고 유사한 방법으로 첫 번째 요소에 상대적인 요소를 나타낼 수 있습니다.

다음 예는 이 색인을 사용하여 송장(invoice) 메시지를 나타냅니다.

IF Body.Invoice.Customer.Billing.Address[<] = 'Hampshire' THEN 
         DO;
          -- more ESQL --
        END IF;   
IF Body.Invoice.Customer.Billing.Address[<2 ] = 'Southampton' THEN
      DO;
          -- more ESQL --
        END IF;   

또한 알 수 없는 횟수만큼 반복하는 요소의 특정 색인을 사용할 수 있습니다.

반복 필드 삭제

메시지 플로우에서 여러 번 요소를 반복하여 메시지를 전달하며 일부 반복을 삭제하려는 경우 삭제한 후에는 반복의 번호 지정은 재정렬된다는 점을 알아 두어야 합니다. 예를 들면, 특정 요소가 5번 반복되는 메시지가 있으며 메시지 플로우에서 다음의 ESQL이 있는 경우:

SET OutputRoot.MRM.e_PersonName[1] = NULL;
SET OutputRoot.MRM.e_PersonName[4] = NULL;

요소 1과 4가 삭제될 것으로 예상합니다. 그러나 반복 요소는 스택에 저장되기 때문에 하나를 삭제하면 그 위의 하나로 대체됩니다. 이것은 위의 예에서 요소 1과 5가 삭제됨을 의미합니다. 이 문제를 방지하려면, 역순으로 삭제하십시오. 즉, 먼저 요소 4로부터 삭제한 다음 요소 1을 삭제하십시오.

주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak04862_