Miscellaneous
본 장에서는 ProSort의 데이터 포맷과 상수 등의 갖가지 정보를 설명한다.
1. 데이터 포맷
다음은 ProSort의 데이터 포맷을 각각 설명한다.
-
CH
문자열을 ASCII 코드 또는 EBCDIC 코드로 표현하는 데이터 포맷이다.
-
USE_CH_EBCDIC 파라미터에 설정한 값이 Y인 경우
각각의 문자를 8bit EBCDIC 코드로 표현한다. 예를 들어 PS3은 D7E2F3 (Hexadecimal)로 표현된다.
-
USE_CH_EBCDIC 파라미터에 설정한 값이 N인 경우
각각의 문자를 ASCII 코드로 표현한다. 예를 들어 PS3은 505333 (Hexadecimal)으로 표현된다.
-
-
TP
숫자를 10진수 ASCII 코드로 표현하는 데이터 포맷이다. 부호는 마지막 byte에 포함된다.
-
USE_ALTERNATIVE_TP_TYPE 파라미터에 설정한 값이 Y인 경우
마지막 byte는 다음과 같이 변환된다.
부호 설명 양수
-
변환 방법
'0'→'0', '1'→'1', '2'→'2', '3'→'3', '4'→'4', '5'→'5', '6'→'6', '7'→'7', '8'→'8', '9'→'9'
예를 들어 123은 123으로 표현된다.
음수
-
변환 방법
'0'→'}', '1'→'J', '2'→'K', '3'→'L', '4'→'M', '5'→'N', '6'→'O', '7'→'P', '8'→'Q', '9'→'R'
예를 들어 -123은 12L로 표현된다.
-
-
USE_ALTERNATIVE_TP_TYPE 파라미터에 설정한 값이 N인 경우
마지막 byte는 다음과 같이 변환된다.
부호 설명 양수
-
변환 방법
'0'→'{', '1'→'A', '2'→'B', '3'→'C', '4'→'D', '5'→'E', '6'→'F', '7'→'G', '8'→'H', '9'→'I'
예를 들어 123은 12C로 표현된다.
음수
-
변환 방법
'0'→'}', '1'→'J', '2'→'K', '3'→'L', '4'→'M', '5'→'N', '6'→'O', '7'→'P', '8'→'Q', '9'→'R'
예를 들어 -123은 12L로 표현된다.
-
-
-
ZD
숫자를 10진수 ASCII 코드로 표현하는 데이터 포맷이다. 부호는 마지막 byte에 포함된다.
마지막 byte는 다음과 같이 변환된다.
부호 설명 양수
-
변환 방법
'0'→'0', '1'→'1', '2'→'2', '3'→'3', '4'→'4', '5'→'5', '6'→'6', '7'→'7', '8'→'8', '9'→'9'
예를 들어 123은 "123"으로 표현된다.
음수
-
변환 방법
'0'→'p', '1'→'q', '2'→'r', '3'→'s', '4'→'t', '5'→'u', '6'→'v', '7'→'w', '8'→'x', '9'→'y'
예를 들어 -123은 "12s"로 표현된다.
-
-
PD
숫자를 각 자릿수마다 4bit씩 사용하여 표현하는 데이터 포맷이다. 부호는 별도의 니블(nibble, 4bit)로 마지막에 표현된다.
ZD는 각 자릿수마다 1byte를 사용하여 숫자를 표현하지만, PD는 ZD보다 2배 정도가 적은 공간으로 숫자를 표현한다. 이러한 특성 때문에 packed decimal이라 부른다.
각 byte는 다음과 같이 니블로 변환된다.
'0'→X'0', '1'→X'1', '2'→X'2', '3'→X'3', '4'→X'4', '5'→X'5', '6'→X'6', '7'→X'7', '8'→X'8', '9'→X'9'
마지막에는 다음과 같이 니블이 별도로 추가된다.
부호 설명 양수
-
변환 방법
X'C'
예를 들어 123은 123C (Hexadecimal)로 표현된다.
음수
-
변환 방법
X'D'
예를 들어 -123은 123D (Hexadecimal)로 표현된다.
-
-
FI
고정 소수점 표현법(fixed-point representation system)을 사용하여 숫자를 표현하는 데이터 포맷이다. 최상위 bit에 부호가 포함된다.
부호 설명 양수
-
변환 방법
0
예를 들어 +247은 00F7 (Hexadecimal)로 표현된다.
음수
-
변환 방법
1
음수 값은 2의 보수로 표현된다. 예를 들어 -247은 FF09 (Hexadicimal)로 표현된다.
-
-
BI
부호 없는 이진수로 숫자를 표현하는 데이터 포맷이다. 임의의 비트 패턴으로 구성된다.
-
AC
각각의 문자를 ASCII 코드로 표현하는 데이터 포맷이다. 예를 들어 PS3은 505333 (Hexadecimal)로 표현된다.
-
EC
각각의 문자를 8bit EBCDIC 코드로 표현하는 데이터 포맷이다. 예를 들어 PS3은 D7E2F3 (Hexadecimal)로 표현된다.
데이터 포맷의 예
다음은 ZD 포맷 코드를 통해 '-247'를 표현하는 예이다.
2 |
4 |
7 |
Decimal |
F2 |
F4 |
D7 |
Hexadecimal |
11110010 |
11110100 |
11010111 |
Binary |
다음은 ZD 포맷 코드를 통해 '+247'를 표현하는 예이다.
F2 |
F4 |
C7 |
11110010 |
11110100 |
11000111 |
다음은 PD 포맷 코드를 통해 '-247'를 표현하는 예이다.
2 |
4 |
7- |
Decimal |
2 |
4 |
7D |
Hexadecimal |
0010 |
0100 |
01111101 |
Binary |
+246은 hexadeimal로 247C가 된다.
2. 비교 필드의 포맷 및 길이 제한
| 포맷 코드 | 길이 제한 | 설명 |
|---|---|---|
ZD |
64bytes |
Signed zoned decimal |
PD |
64bytes |
Signed packed decimal |
FI |
64bytes |
Signed fixed point |
BI |
64bytes |
unsigned binary |
AC |
64bytes |
ASCII character |
EC |
64bytes |
EBCDIC character |
3. 상수
다음은 ProSort에서 사용할 수 있는 상수(Constant)이다.
-
Decimal Number
xxxxx와 같은 형태이며, 다음과 같이 숫자로 정의한다.
100, 1000, 2345
-
Character String Format
C’xxx…x’와 같은 형태이며, 다음과 같이 문자로 정의한다.
C'ASDF', C'Test'
-
Hexadecimal String Format
X’yy…yy’와 같은 형태이며, 다음과 같이 헥사 문자열로 정의한다.
X'ABCD', X'BF3C', X'AF050505', X'BF3C'
4. Edit Mask Patterns
Pattern은 다음과 같은 속성이 있다.
| 속성 | 설명 |
|---|---|
I |
insignificant digit로, 0이면 출력되지 않는다. |
T |
significant digit로, 0이어도 출력된다. |
CR |
M3인 경우에만 정의할 수 있다. 음수이면 출력되고, 음수가 아니면 2개의 blank가 출력된다. |
S |
sign 기호(+/-)를 나타낸다. |
다음은 예제 값을 통해 각 Edit Mask Patterns를 실행한 결과이다.
| Mask | Pattern | 예제 값 | 실행 결과 |
|---|---|---|---|
M0 |
IIIIIIIIIIIIIITS |
+01234 |
1234 |
-00001 |
1- |
||
M1 |
TTTTTTTTTTTTTTTS |
-00123 |
00123- |
+00123 |
00123 |
||
M2 |
I,III,III,III,IIT.TTS |
+123450 |
1,234.50 |
-000020 |
0.20- |
||
M3 |
I,III,III,III,IIT.TTCR |
-001234 |
12.34CR |
+123456 |
1,234.56 |
||
M4 |
SI,III,III,III,IIT.TT |
+0123456 |
+1,234.56 |
-1234567 |
-12,345.67 |
||
M5 |
SI,III,III,III,IIT.TTS |
-001234 |
(12.34) |
+123450 |
1,234.50 |
||
M6 |
III-TTT-TTTT |
00123456 |
012-3456 |
12345678 |
1-234-56788 |
||
M7 |
TTT-TT-TTTT |
00123456 |
000-12-3456 |
12345678 |
012-34-5678 |
||
M8 |
IT:TT:TT |
030553 |
3:05:53 |
121736 |
12:17:36 |
||
M9 |
IT/TT/TT |
123094 |
12/30/94 |
083194 |
8/31/94 |
||
M10 |
IIIIIIIIIIIIIIT |
01234 |
1234 |
00000 |
0 |
||
M11 |
TTTTTTTTTTTTTTT |
00010 |
00010 |
01234 |
01234 |
||
M12 |
SIII,III,III,III,IIT |
+1234567 |
1,234,567 |
-0012345 |
-12,345 |
||
M13 |
SIII.III.III.III.IIT |
+1234567 |
1.234.567 |
-0012345 |
-12.345 |
||
M14 |
SIII III III III IITS |
+1234567 |
1 234 567 |
-0012345 |
(12 345) |
||
M15 |
III III III III IITS |
+1234567 |
1 234 567 |
-0012345 |
12 345- |
||
M16 |
SIII III III III IIT |
+1234567 |
1 234 567 |
-0012345 |
-12 345 |
||
M17 |
SIII’III’III’III’IIT |
+1234567 |
1’234’567 |
-0012345 |
-12’345 |
||
M18 |
SI,III,III,III,IIT.TT |
+0123456 |
1,234.56 |
-1234567 |
-12,345.67 |
||
M19 |
SI.III.III.III.IIT,TT |
+0123456 |
1.234,56 |
-1234567 |
-12.345,67 |
||
M20 |
SI III III III IIT,TTS |
+0123456 |
1 234,56 |
-1234567 |
(12 345,67) |
||
M21 |
I III III III IIT,TTS |
+0123456 |
1 234,567 |
-1234567 |
12 345,67- |
||
M22 |
SI III III III IIT,TT |
+0123456 |
1 234,56 |
-1234567 |
-12 345,67 |
||
M23 |
SI’III’III’III’IIT.TT |
+0123456 |
1’234.56 |
-1234567 |
-12’345.67 |
||
M24 |
SI’III’III’III’IIT,TT |
+0123456 |
1’234,56 |
-1234567 |
-12’345,67 |
||
M25 |
SIIIIIIIIIIIIIIT |
+01234 |
1234 |
-00001 |
-1 |
||
M26 |
STTTTTTTTTTTTTTT |
1234 |
+01234 |
-1 |
-00001 |