메시지 세트: COBOL에서 가져오기: 지원되는 기능
COBOL 임포터는 COBOL 데이터 유형을 메시지 모델 요소에 맵핑할 때 기본 값 및 작동 세트를 사용합니다.
다음 표는 COBOL 정의가 메시지 모델의 XML 스키마 설정에 미치는 영향을 보여줍니다.
COBOL 절 | XML 스키마 데이터 유형 | 참고 |
---|---|---|
PIC A | xsd:string | |
PIC G | xsd:string | 이를 처리하려면 | 에서 컴파일시 로케일 이름을 ja_JP로 설정하십시오.
PIC N | xsd:string | 이를 처리하려면 | 에서 컴파일시 로케일 이름을 ja_JP로 설정하십시오.
PIC X | xsd:string | |
PIC 9(n) n = 1-4 | xsd:short | DISPLAY, COMP 또는 COMP-3 |
PIC 9(n) n = 5-9 | xsd:int | DISPLAY, COMP 또는 COMP-3 |
PIC 9(n) n = 10-18 | xsd:long | DISPLAY, COMP 또는 COMP-3 |
PIC 9(n) n = 19-31 | xsd:integer | DISPLAY, COMP 또는 COMP-3 |
PIC 9(n)V9(m) | xsd:decimal | DISPLAY, COMP 또는 COMP-3 임의의 가상 소수점 값 |
COMP-1 | xsd:float | |
COMP-2 | xsd:double | |
임의의 편집 문자열 | xsd:string | |
임의의 편집된 숫자 | xsd:string | 예를 들어, 다음 문자 중 하나를 포함하는
COBOL PICTURE 절:
통합 노드 논리 유형이 숫자 1이길 원하는 경우, COBOL PICTURE 절이 이들 문자 중 하나를 포함하지 않아야 합니다. |
값 | 모든 | 88 레벨이 아닌 VALUE 절은 스키마 기본값으로 가져올 수 있습니다(가져오기 마법사에서는 옵션). |
다음 표는 COBOL 정의가 메시지 모델에서 생성되는 요소의 물리적 MRM CWF 특성에 어떻게 영향을 주는지 보여줍니다.
COBOL 절 | CWF 물리적 유형 | CWF 길이 특성 | 기타 CWF 특성 |
---|---|---|---|
PIC X(n) PIC A(n) |
고정 길이 문자열 | Length = n Length Units = Bytes |
Justification = Left Justify Padding Character = SPACE |
PIC G(n) PIC N(n) |
고정 길이 문자열 | Length = n Length Units = Characters |
Justification = Left Justify Padding Character = SPACE |
PIC 9(n) DISPLAY n=1-31 | External Decimal | Length = n Length Units = Bytes |
Justification = Right Justify Padding Character = '0' Signed = Unticked Sign Orientation = Trailing |
PIC 9(n) COMP, COMP-4, COMP-5 또는 BINARY | 정수 | Length = n을 기초로 하는 2, 4 또는 8 Length Units = Bytes |
Signed = Unticked Sign Orientation = Blank |
PIC 9(n) COMP-3 n=1-18 | 팩형 10진수 | Length = CEILING((n+1)/2) Length Units = Bytes |
Signed = Unticked Sign Orientation = Blank |
PIC S9(n) DISPLAY n=1-31 | External Decimal | Length = n Length Units = Bytes |
Signed = Ticked Sign Orientation = Trailing *참고 1 참조 |
PIC S9(n) COMP 또는 COMP-3 n=1-18 |
정수 또는 팩형 10진수 | Length = 위의 COMP 및 COMP-3 정의 참조 Length Units = Bytes |
Signed = Ticked Sign Orientation = Blank |
PIC 9(m)V9(n) DISPLAY n=1-31 | External Decimal | Length = n+m Length Units = Bytes |
Signed = Unticked Sign Orientation = Trailing Virtual Decimal Point = n |
PIC 9(m)V9(n) COMP 또는 COMP-3 | 정수 또는 팩형 10진수 | COMP-3의 경우 Length = CEILING((n+m+1)/2) COMP의 경우 Length = 2, 4 또는 8 Length Units = Bytes |
Signed = Unticked Sign Orientation = Blank Virtual Decimal Point = n |
COMP-1 | Float | Length = 4 Length Units = Bytes |
Signed = Ticked Sign Orientation = Blank |
COMP-2 | Float | Length = 8 Length Units = Bytes |
Signed = Ticked Sign Orientation = Blank |
SYNC | Float, 정수 또는 팩형 10진수 | 적절한 Leading Skip Count 적절한 Trailing Skip Count 적절한 바이트 맞추기 *참고 2 참조 |
|
- Sign Orientation은 COBOL 정의의
SEPARATE, LEADING 또는 TRAILING
키워드를 바탕으로 다음 값 중 하나를 가질 수 있습니다.
- Leading
- Leading Separate
- Trailing
- Trailing Separate
- SYNC 키워드는 필드가 1, 2, 4 또는
8바이트 경계에서 맞춰지게 합니다. 이것은 필드 앞이나 뒤에 '유휴
바이트'가 추가되게 만들 수 있습니다. Leading Skip Count는
필드 전에 추가되는 그런 바이트의 수입니다. Trailing
Skip Count는 필드 뒤에 추가되는 그런 바이트의
수입니다.
Leading Skip Count 및 Trailing Skip Count는 SYNC 절과 상관없이 임포터가 가져온 각 요소에 대해 임포터가 계산합니다. SYNC 절이 있는 경우 0이 아닌 값을 갖습니다.
반복 요소가 있으면 Leading Skip Count 및 Trailing Skip Count는 반복 요소의 첫 번째 발행에 대해 사용됩니다. 후속 발생의 경우에는 Trailing Skip Count만 사용됩니다.
바이트 맞추기가 필요한 필드의 자세한 내용은 COBOL 참조 자료를 참조하십시오.
- 사용자가 가져오는 모든 파일은 구문적으로 맞아야 합니다. 가져올 파일이 구문적으로 올바르지 않은 경우 결과는 예측할 수 없습니다.
- POINTER, COMP-X, INDEX 또는 PROCEDURE-POINTER 키워드를 갖는 COBOL 데이터 유형은 지원되지 않습니다.
- NATIVE 키워드를 포함하는 COBOL 절은 오류를 유발하며 가져오지 않습니다.
- COBOL 레벨 66 및 레벨 77 데이터 항목은 가져오지 않습니다.
- 16진 2진 값은 숫자가 아닌 리터럴과 관련이 없습니다. COBOL 임포터가 가져오는 LINKAGE SECTION에 상주할 수 없습니다. COBOL 파일의 다른 어디에나 상주할 수 있습니다. 또는 16진 값을 PIC X의 경우 문자열, 또는 PIC 9의 경우 10진수 숫자로 변환할 수 있습니다.
- 요소 이름이 Java™ 언어 키워드와 충돌하는 경우 요소 이름을 단일 밑줄 문자로 접두부로 수정하여 요소 이름을 수정합니다.
- COBOL 85에 대한 오브젝트 지향 확장은 지원되지 않습니다. 예를 들어 OBJECT-REFERENCE는 지원되지 않습니다.
- COBOL OCCURS DEPENDING ON 절. 그런 구조 안에 있는 요소의 Byte Alignment, Leading Skip Count 및 Trailing Skip Count CWF 특성은 적절하게 설정되지 않습니다. 메시지 편집기를 사용하여 이들을 정정해야 합니다.
- 가져온 COBOL 소스 파일에 Picture 문자열의 value 절에 QUOTE 또는 QUOTES가 들어 있는 경우, COBOL 임포터 마법사의 가져오기 옵션 페이지에서 COBOL QUOTE 컴파일 옵션을 SINGLE로 설정하지 않으면 기본 작동은 데이터를 큰따옴표와 함께 입력하는 것입니다.
부호 있는 외부 10진수 숫자
IBM® Integration Bus 의 MRM 사용자 정의 연결 형식 (CWF) 및 TDS 컴포넌트는 숫자 데이터에 대해 외부 십진 (Zoned Decimal이라고도 알려짐) 데이터 형식을 지원합니다. 이 형식의 숫자 데이터는 내부적으로 10진수 문자 데이터로 저장됩니다. 예를 들어, EBCDIC 코드를 사용하는 시스템에서 4바이트 외부 10진수 필드에 저장되는 숫자 1234는 문자열 '1234'로 저장되고, 그의 실제 내부 16진 표현은 'F1F2F3F4'입니다.
부호가 있는 외부 10진수 숫자에서 첫 번째 또는 마지막 바이트의 전반부를 수정함으로써 부호를 실제 데이터에 포함시킬 수 있습니다(부호 선두 문자 또는 부호 후미 문자 표현을 사용하는지 여부에 따라 다름). 일반적으로, '0xC'는 양수를 표현하는 데 사용되고 '0xD'는 음수를 표현하는 데 사용되며, '0xF'는 부호가 없는 숫자를 표현하는 데 사용됩니다.
ASCII 시스템에서는 외부 10진수 데이터의 내부 표현에 대한 많은 메커니즘이 있습니다. IBM의 pSeries 머신에서 사용하는 하나의 표시 ('부호 ASCII') 는 비부호화 및 양수의 첫 번째 또는 마지막 숫자에 대한 일반 ASCII 코드 ('0' [hex 30]~'9' [hex 39]) 와 음수의 경우 'p' [hex 70]~'y' [hex 79] 를 사용합니다.
일부 다른 ASCII 기반 시스템에서는 대체 메소드(부호 EBCDIC 사용자 정의)가 사용됩니다. 이 메소드는 실제 내부 16진 표현이 다를 경우에도 EBCDIC 기반 시스템과 동일한 문자를 사용합니다. 이 기술을 사용하는 경우 EBCDIC 및 ASCII 플랫폼 모두에 대한 문자열은 동일합니다. 잠재적으로 EBCDIC 플랫폼으로부터 메시지(PIC XXX 및 PIC S999 같은 항목을 포함하는 COBOL 사본에서 작성되는)를 수신하고, 전체 메시지를 ASCII로 또는 반대로 변환할 수 있습니다. 메시지의 외부 10진수 필드를 나타내는(ASCII에서 EBCDIC로 또는 EBCDIC에서 ASCII로 변환 후) 문자열이 10진수에 대해 올바른 부호를 나타내는 코드 포인트에 맵핑합니다.
이 메소드는 중괄호 문자가 가변적(EBCDIC 코드 페이지에 따라서 서로 다른 코드 포인트를 가짐)이라는 한계를 포함합니다. 이 메커니즘은 중괄호 문자 '{' 및 '}'(부호 있는 0을 나타내는 데 사용됨)가 정확하게 코드 포인트 X'C0' 및 X'D0'를 갖는 EBCDIC 코드 페이지에만 작동합니다. 예를 들어, 코드 페이지 500의 경우에는 작동하지만, 중괄호가 코드 포인트 X'8E' 및 X'9C를 갖는 코드 페이지 871에 대해서는 작동하지 않습니다.
ASCII 환경(런타임 시에 CCSID 특성에 의해 판별됨)에서는 입력 및 출력 둘 모두에 대한 기본값은 '부호 ASCII' 표현입니다. decimal, float 및 integer 유형의 로컬 속성 및 로컬 요소에 대한 CWF 물리적 계층에서 적용 가능한 표현을 지정할 수 있습니다.
다음 표는 각각 선두 문자 또는 후미 문자 부호가 포함(임베드)된 외부 10진수 숫자의 첫 번째 및 마지막 숫자의 내부 표현(문자 및 실제 16진 값 둘 다)을 보여줍니다. (표는 부호 없는 값에 대한 표현을 지정하지 않는데, ASCII의 경우 0x30-0x39 및 EBCDIC의 경우 0xF0-0xF9입니다.)
ASCII 환경 | EBCDIC 환경 | ASCII 환경 | EBCDIC 환경 | ||||
---|---|---|---|---|---|---|---|
양의 부호 값 | 음의 부호 값 | ||||||
숫자 | 부호 ASCII | 부호 EBCDIC 사용자 정의 | 부호 ASCII | 부호 EBCDIC 사용자 정의 | |||
0 | 0(30) | {(7B) | {(C0) | p(70) | }(7D) | }(D0) | |
1 | 1(31) | A(41) | A(C1) | q(71) | J(4A) | J(D1) | |
2 | 2(32) | B(42) | B(C2) | r(72) | K(4B) | K(D2) | |
3 | 3(33) | C(43) | C (C3®) | s(73) | L(4C) | L(D3) | |
4 | 4(34) | D(44) | D(C4) | t(74) | M(4D) | M(D4) | |
5 | 5(35) | E(45) | E(C5) | u(75) | N(4E) | N(D5) | |
6 | 6(36) | F(46) | F(C6) | v(76) | O(4F) | O(D6) | |
7 | 7(37) | G(47) | G(C7) | w(77) | P(50) | P(D7) | |
8 | 8(38) | H(48) | H(C8) | x(78) | Q(51) | Q(D8) | |
9 | 9(39) | I(49) | I(C9) | y(79) | R(52) | R(D9) |
다음 표는 이런 방식을 사용하여 전송하거나 수신할 수 있는 것의 대표격인 단순 숫자의 범위에 대한 몇 가지 예를 제공합니다.
부호 선두 문자 | 부호 후미 문자 | |||||
---|---|---|---|---|---|---|
ASCII 환경 | EBCDIC 환경 | ASCII 환경 | EBCDIC 환경 | |||
10진수 값 | 부호 ASCII | 부호 EBCDIC 사용자 정의 | 부호 ASCII | 부호 EBCDIC 사용자 정의 | ||
1234 | 31 32 33 34
"1234" |
31 32 33 34
"1234" |
F1 F2 F3 F4
"1234" |
31 32 33 34
"1234" |
31 32 33 34
"1234" |
F1 F2 F3 F4
"1234" |
+1234 | 31 32 33 34
"1234" |
41 32 33 34
"A234" |
C1 F2 F3 F4
"A234" |
31 32 33 34
"1234" |
31 32 33 44
"123D" |
F1 F2 F3 C4
"123D" |
-1234 | 71 32 33 34
"q234" |
4A 32 33 34
"J234" |
D1 F2 F3 F4
"J234" |
31 32 33 74
"123t" |
31 32 33 4D
"123M" |
F1 F2 F3 D4
"123M" |
7890 | 37 38 39 30
"7890" |
37 38 39 30
"7890" |
F7 F8 F9 F0
"7890" |
37 38 39 30
"7890" |
37 38 39 30
"7890" |
F7 F8 F9 F0
"7890" |
+7890 | 37 38 39 30
"7890" |
47 38 39 30
"G890" |
C7 F8 F9 F0
"G890" |
37 38 39 30
"7890" |
37 38 39 7B
"789{" |
F7 F8 F9 C0
"789{" |
-7890 | 77 38 39 30
"w890" |
50 38 39 30
"P890" |
D7 F8 F9 F0
"P890" |
37 38 39 70
"789p" |
37 38 39 7D
"789}" |
F7 F8 F9 D0
"789}" |