ASCII CR LF로 EBCDIC NL 변환

이 주제에서는 텍스트 메시지에 있는 줄 바꾸기(NL) 문자를 캐리지 리턴(CR)과 줄 바꾸기(LF) 문자 쌍으로 변경하는 작업의 예를 설명합니다.

이 변환은 EBCDIC 플랫폼의 메시지(예: CCSID 1047 사용)를 ASCII 플랫폼(예: CCSID 437 사용)으로 송신할 경우 유용할 수 있습니다. EBCDIC NL 문자 16진 '15'가 정의되지 않은 ASCII 문자 16진 '7F'로 변환될 때 문제점이 발생할 수 있습니다. ASCII 코드 페이지에는 NL 문자에 해당하는 코드 포인트가 없습니다.

이 예에서 입력 메시지를 BLOB 도메인의 메시지로 해석하는 메시지 플로우가 작성됩니다. 이는 ResetContentDescriptor 노드로 전달되어 데이터를 MRM 도메인의 메시지로 설정합니다. 메시지를 "msg_nl"(EBCDIC NL 문자로 구분된 반복 문자열 요소 세트)이라고 하며, Compute 노드는 "msg_crlf"(CR LF 쌍으로 구분된 반복 문자열 요소 세트)라는 MRM 도메인에서 다른 메시지를 기본으로 출력을 작성하는 데 사용됩니다. 그런 다음, 메시지 도메인은 또다른 ResetContentDescriptor 노드에서 BLOB으로 다시 변경됩니다. 다음 그림은 이 메시지 플로우를 보여줍니다.

 out 터미널이 ResetContentDescriptor1으로 연결된 MQInput1 노드, out 터미널이 Compute1으로 연결된 노드, out 터미널이 ResetContentDescriptor2로 연결된 노드, out 터미널이 MQOutput1으로 연결된 노드로 구성된 선형 메시지 플로우를 나타내는 다이어그램. 다른 터미널은 연결되어 있지 않습니다.

다음의 지시사항에서는 메시지를 작성하는 방법과 메시지 플로우를 구성하는 방법을 보여줍니다.

  1. MRM 도메인에 있는 메시지에 대한 메시지 모델을 작성합니다.
    1. myProj라는 메시지 세트 프로젝트 작성
    2. TDS 물리적 형식을 갖는 myMessageSet라는 메시지 세트 작성(디폴트 이름은 TDS1)
    3. 유형이 xsd:string인 요소 string1 작성
    4. t_msg_nl이라는 복합 유형 작성 후 다음과 같은 복합 유형 등록 정보 지정
      • 작성 = 순서 지정된 세트
      • 컨텐츠 유효성 검증 = 닫기
      • 데이터 요소 분리 = 모든 요소 디리미트
      • 디리미터 = <U+0085> 16진 '0085'는 NL 문자의 UTF-16 표현)
      • 반복 =
      • 최소 발생 수 = 1
      • 최대 발생 수 = 50(메시지 텍스트는 50행 이하로 구성되도록 간주됨)
    5. 요소 string1 추가 후 다음과 같은 등록 정보 설정
      • 반복 요소 디리미터 = <U+0085>
    6. 메시지 msg_nl 작성 후 연관된 복합 유형을 t_msg_nl로 설정
    7. t_msg_crlf이라는 복합 유형 작성 후 다음과 같은 복합 유형 등록 정보 지정
      • 작성 = 순서 지정된 세트
      • 컨텐츠 유효성 검증 = 닫기
      • 데이터 요소 분리 = 모든 요소 디리미트
      • 디리미터 <CR><LF> (<CR> and <LF> are the mnemonics for the CR and LF characters)
      • 반복 =
      • 최소 발생 수 = 1
      • 최대 발생 수 = 50
    8. 요소 string1 추가 후 다음과 같은 등록 정보 설정
      • 반복 요소 디리미터 = <CR><LF>
    9. 메시지 msg_crlf를 작성하고 복합 유형을 t_msg_crlf로 설정하십시오.
  2. 위의 그림에 표시된 메시지 플로우를 구성합니다.
    1. MQInput1 노드로 시작
      • 메시지 도메인BLOB로 설정
      • Set 큐 이름 = <Your input message queue name>
    2. MQInput1의 out 터미널에 연결되는 ResetContentDescriptor1 노드 추가
      • 메시지 도메인MRM으로 설정
      • 메시지 도메인 재설정 선택
      • 메시지 세트<사용자 메시지 세트 ID>로 설정(최대 13자)
      • 메시지 세트 재설정 선택
      • 메시지 유형msg_nl로 설정
      • 메시지 유형 재설정 선택
      • 메시지 형식TDS1으로 설정
      • 메시지 형식 재설정 선택
    3. ResetContentDescriptor1의 out 터미널에 연결되는 Compute1 노드 추가
      • 이 노드에 대해 ESQL 모듈의 이름을 입력하거나 디폴트(<message flow name>_Compute1)를 승인하십시오.
      • Compute1 노드를 마우스 오른쪽 단추로 누르고 ESQL 열기를 선택하십시오. 모듈에서 ESQL을 다음과 같이 코딩하십시오.
        -- Declare local working variables
        DECLARE I INTEGER 1;
        DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
        
        -- Loop to copy all message headers from input to output message
        WHILE I < J DO
         SET OutputRoot.*[I] = InputRoot.*[I];
          SET I=I+1;
                END WHILE; 
        
        -- Set new output message type which uses CRLF delimiter
        SET OutputRoot.Properties.MessageType = 't_msg_crlf';
        
        -- Loop to copy each instance of string1 child within message body
        SET I = 1;
        SET J = CARDINALITY("InputBody"."string1"[]);
        WHILE I <= J DO
          SET "OutputRoot"."MRM"."string1"[I] = "InputBody"."string1"[I];
                SET I=I+1;
            END WHILE;

        메시지에 있는 기존 헤더의 카디낼리티 값으로 초기화된 변수 J의 사용을 고려하십시오. 이는 다음 WHILE문을 코딩할 때 발생하는 루프의 각 반복에서 카디낼리티를 계산하는 것보다 더욱 효율적입니다.

        WHILE I < CARDINALITY(InputRoot.*[]) DO
    4. Compute1 노드의 out 터미널에 연결되는 ResetContentDescriptor2 노드 추가
      • 메시지 도메인BLOB로 설정
      • 메시지 도메인 재설정을 선택하십시오.
    5. 마지막으로 ResetContentDescriptor2 노드의 out 터미널에 연결된 MQOutput1 노드 추가. 출력 메시지를 필요한 큐로 전달하도록 등록 정보를 구성하십시오.
관련 개념
메시지 플로우 개요
ESQL 개요
메시지 모델링
관련 태스크
메시지 플로우 설계
메시지 플로우 컨텐츠 정의
ESQL 파일 관리
관련 참조
자국어 지원(NLS)
Compute 노드
MQInput 노드
MQOutput 노드
ResetContentDescriptor 노드
ESQL 참조
DECLARE문
SET문
WHILE문
TDS 니모닉
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac11630_