MOVE문

MOVE문은 target으로 식별된 참조 변수가 가리키는 것으로 필드를 변경합니다.

구문

주:
  1. RepeatClausePREVIOUSSIBLINGNEXTSIBLING 규정자와 함께 사용할 수 있습니다.

TO절을 포함하는 경우 소스가 가리키는 것과 동일한 엔티티를 가리키도록 대상 참조를 변경합니다. 메시지 필드이거나 선언된 변수일 수 있습니다.

PARENT, PREVIOUSSIBLING, NEXTSIBLING, FIRSTCHILD 또는 LASTCHILD절을 포함하는 경우 MOVE문은 현재 위치와 관련하여 지정된 방향으로 대상 참조 변수를 이동시키려고 시도합니다. 제공된 방향에 필드가 있는 경우 이동이 성공합니다. 이러한 필드가 없는 경우 이동이 실패하고 참조 변수는 계속해서 이전과 동일한 필드나 변수를 가리키며 LASTMOVE 함수가 거짓을 리턴합니다. LASTMOVE 함수를 사용하여 이동의 성공 또는 실패를 판별할 수 있습니다.

TYPE절, NAME절 또는 둘다 있는 경우 대상은 다시 지정된 방향(PREVIOUSSIBLING, NEXTSIBLING, FIRSTCHILD 또는 LASTCHILD)으로 이동되지만 주어진 유형, 이름 또는 둘다 있는 필드로 이동됩니다. 대상 필드의 이름 또는 유형(또는 둘다)이 알려진 경우에 특히 유용합니다. 필드를 탐색하는 데 필요한 MOVE문의 수가 줄어들기 때문입니다. 즉, 기준과 일치하지 않는 필드는 생략되고 예를 들면, 화이트스페이스(whitespace)를 나타내는 것과 같이 예상치 못한 메시지 트리 필드가 포함될 수도 있기 때문입니다.

지정된 이동을 수행할 수 없는 경우(즉, 주어진 유형이나 이름의 필드가 없는 경우) 대상은 변경되지 않고 LASTMOVE 함수가 거짓을 리턴합니다. TYPE절, NAME절 또는 두 절에 모두 적당한 데이터 유형(유형 INTEGER와 이름 CHARACTER)의 값을 리턴하는 표현식이 포함될 수 있습니다. 제공된 값이 널(null)인 경우 예외가 발생합니다.

두 개의 추가 절인 NAMESPACE 및 IDENTITY는 NAME절의 기능을 향상시킵니다.

NAMESPACE절은 유형 character의 널(null)이 아닌 값을 리턴하는 표현식을 사용합니다. 또한, 네임스페이스를 나타내는 *를 사용합니다. *는 ESQL에서 단항 연산자가 아니기 때문에 표현식과 혼동할 수 없다는 점을 참고하십시오.

의미는 다음과 같이 NAME 및 NAMESPACE절의 존재에 따라 다릅니다.
NAMESPACE NAME 요소 위치 기준
없음 없음 유형, 색인 또는 둘 다
없음 있음 디폴트 네임스페이스의 이름
* 있음 이름
있음 없음 Namespace
있음 있음 이름 및 네임스페이스

IDENTITY 절은 TYPE, NAMESPACE 및 NAME 절 대신 단일 경로 요소를 사용하여 필드 참조에 대한 주제에 설명된 모든 규칙을 따릅니다(ESQL 필드 참조).

MOVE를 PREVIOUSSIBLING 또는 NEXTSIBLING과 함께 사용할 때 대상을 현재 필드와 동일한 유형과 이름의 이전 또는 다음 필드로 이동시키는 REPEAT, TYPE 및 NAME 키워드를 지정할 수 있습니다. REPEAT 키워드의 경우 유형과 이름을 정의하기 위해 표현식을 작성할 필요가 없기 때문에 동일한 종류의 동위로 이동할 때 특히 유용합니다.

MOVE cursor FIRSTCHILD TYPE 0x01000000 NAME 'Field1';

이 예는 참조 변수 커서를, 커서가 현재 가리키고 있으며 유형이 0x01000000이고 이름이 Field1인 필드의 첫 번째 하위 필드로 이동시킵니다.

MOVE문은 새 필드를 작성할 수 없습니다.

MOVE문은 하나의 반복 구조 인스턴스에서 다음 인스턴스로 진행하는 데 자주 사용합니다. 구조 내의 필드는 상대 필드 참조를 사용하여 액세스할 수 있습니다. 예를 들면,
WHILE LASTMOVE(sourceCursor) DO
    SET targetCursor.ItemNumber  = sourceCursor.item;
    SET targetCursor.Description = sourceCursor.name;
    SET targetCursor.Price       = sourceCursor.prc;
    SET targetCursor.Tax         = sourceCursor.prc * 0.175;
    SET targetCursor.quantity    = 1;
    CREATE NEXTSIBLING OF targetCursor AS targetCursor REPEAT;
    MOVE sourceCursor NEXTSIBLING REPEAT TYPE NAME;
    END WHILE;

참조 변수에 대한 자세한 정보와 참조 변수 이동의 예는 동적 필드 참조 작성에서 참조하십시오.

관련 개념
ESQL 개요
관련 태스크
ESQL 개발
동적 필드 참조 작성
관련 참조
구문 다이어그램: 사용 가능한 유형
ESQL문
LASTMOVE 함수
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak05090_