확장 이진화 십진법 교환 부호

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

확장 이진화 십진법 교환 부호(EBCDIC, Extended Binary Coded Decimal Interchange Code)는 IBM 메인프레임용 운영 체제인 z/OS, OS/390, VM 운영 체제, VSE 운영 체제와 IBM의 중급 컴퓨터 운영 체제인 OS/400과 i5/OS 등에서 사용되는 8비트 문자 인코딩(코드 페이지)이다(BCD 참조). 또한 후지쯔-지멘스의 BS2000/OSD나 휴렛 패커드의 MPE/iX, 유니시스의 MCP 등 IBM 외 플랫폼에서도 사용된다. EBCDIC은 천공 카드에서 사용하던 코드와 1950년대 후반에서 1960년대 초에 나온 대부분의 IBM 컴퓨터 주변 기기에서 사용됐던 6비트 이진화 십진법 부호에서 유래하였다.[1]

역사[편집]

EBCDIC('엡시딕'으로 읽는다)은 IBM에서 1963년과 1964년에 걸쳐 고안되었고 IBM System/360 계열의 메인프레임 컴퓨터와 함께 소개되었다. 별도로 개발된 7비트 인코딩 방식인 ASCII와 달리 8비트 문자열 인코딩이다. 천공 카드 상의 두 "존(zone)"과 "숫자"를 6비트에 인코딩하는 효율적인 방법으로 고안된 기존 IBM 이진화 십진법 인코딩을 확장하기 위해 만들어졌다.

IBM은 ASCII 표준화 위원회의 주요 지지자였지만[2] ASCII 주변장치(일례로 카드 천공기)를 System/360 출시에 맞춰 내어 놓을 수 없었다. IBM은 이 때문에 당시 EBCDIC을 사용할 수 밖에 없었다.[3] System/360은 큰 성공을 거뒀고 자연히 EBCDIC도 널리 사용되었다.

z시리즈나 i시리즈에 사용된 리눅스 외에 모든 IBM 메인프레임 주변장치와 운영 체제는 고유 인코딩으로 EBCDIC를 사용한다.[4]하지만 소프트웨어 수준에서는 다른 인코딩 간 변환이 가능하다. 많은 하드웨어 주변장치 역시 인코딩 간 변환을 지원하며, IBM z시리즈 같은 최신 메인프레임은 하드웨어 수준에서 서로 다른 문자 집합 간 변환을 빠르게 하기 위한 프로세서 명령어를 포함하고 있다.

EBCDIC은 ISO-8859 계열이나 유니코드 같은 ASCII 기반 코드 페이지에 비해 최근 기술적인 관점에서는 장점이 없다. 각 부호는 기술적으로 기발하게 설계된 부분도 있다. 일례로 ASCII와 EBCDIC은 특정 1비트만 보면 대문자인지 소문자인지 구분할 수 있게 되어 있다. 하지만 알파벳이 연속적이지 않은 등 EBCDIC은 ASCII에 비해 사용하기 어려운 측면도 있다. 단일 바이트 확장 ASCII 코드 페이지들처럼 대부분의 EBCDIC 코드 페이지를 사용할 때 하나의 데이터베이스나 텍스트 파일 내에서 최대 언어 2개까지만(즉, 영어와 또 다른 한 언어) 사용할 수 있었다.

제대로 된 다중 언어 문장을 지원하려면 훨씬 더 많은 문자들을 지원하는 시스템이 필요하다. 이를 위해서는 일반적으로 어떤 형태든 유니코드가 지원되어야 한다. 유니코드 컨소시엄에서는 UTF-EBCDIC이라는 EBCDIC 유니코드 변환 형식(Unicode Transformation Format)을 제안했으나 원래 일반적인 시스템 간 정보 교환을 위해 사용할 목적으로 설계되지 않았고, EBCDIC을 사용하는 시스템 상에서도 사용된 바가 없다. IBM 메인프레임은 UTF-16은 지원하나 UTF-EBCDIC은 지원하지 않는다.

아랍어를 위한 EBCDIC 버전들은 유니코드와 같은 최근 인코딩처럼 논리 순서대로 오른쪽에서 왼쪽에서 인코딩하는 대신, 통상 화면에 보이는 순서, 즉, 더 오래된 메인프레임이나 라인 프린터처럼 왼쪽에서 오른쪽으로 인코딩한다.

코드 페이지 배열[편집]

아래 표는 EBCDIC의 코드 페이즈 변형 중 하나인 CCSID 500을 기본으로 한 것으로 기본 영어 EBCDIC 문자만 표시했다. 00-3F와 FF는 제어 문자이고, 40은 공백, 41은 단어 잘림 방지 공백("RSP": "Required Space" 즉, "필요한 공백"), E1은 수치 간 공백("NSP": "Numeric Space" 즉, "숫자 공백"), CA는 소프트 하이픈(줄 바꿈 시 한 단어 중간에서 하이픈을 넣고 줄 바꿈이 가능한 위치 표시)을 나타낸다. 각 문자는 동등한 유니코드 코드를 표기했다. 모든 EBCDIC 코드 페이지에 포함되는 알파벳, 숫자, 구두점, 제어 문자는 볼드체로 표시하였다. 할당되지 않은 코드들은 보통 다양한 EBCDIC 코드 페이지 변형들에서 국제 혹은 지역 특화된 문자에 할당된다.

EBCDIC
—0 —1 —2 —3 —4 —5 —6 —7 —8 —9 —A —B —C —D —E —F
 
0−
 
NUL
0000
0
SOH
0001
1
STX
0002
2
ETX
0003
3
SEL

4
HT
0009
5
RNL

6
DEL
007F
7
GE

8
SPS

9
RPT

10
VT
000B
11
FF
000C
12
CR
000D
13
SO
000E
14
SI
000F
15
 
1−
 
DLE
0010
16
DC1
0011
17
DC2
0012
18
DC3
0013
19
RES ENP

20
NL
0085
21
BS
0008
22
POC

23
CAN
0018
24
EM
0019
25
UBS

26
CU1

27
IFS
001C
28
IGS
001D
29
IRS
001E
30
IUS ITB
001F
31
 
2−
 
DS

32
SOS

33
FS

34
WUS

35
BYP INP

36
LF
000A
37
ETB
0017
38
ESC
001B
39
SA

40
SFE

41
SM SW

42
CSP

43
MFA

44
ENQ
0005
45
ACK
0006
46
BEL
0007
47
 
3−
 


48


49
SYN
0016
50
IR

51
PP

52
TRN

53
NBS

54
EOT
0004
55
SBS

56
IT

57
RFF

58
CU3

59
DC4
0014
60
NAK
0015
61


62
SUB
001A
63
 
4−
 
SP
0020
64
RSP
00A0
65


66


67


68


69


70


71


72


73


74
.
002E
75
<
003C
76
(
0028
77
+
002B
78
|
007C
79
 
5−
 
&
0026
80


81


82


83


84


85


86


87


88


89
!
0021
90
$
0024
91
*
002A
92
)
0029
93
;
003B
94
¬
00AC
95
 
6−
 
-
002D
96
/
002F
97


98


99


100


101


102


103


104


105
¦
00A6
106
,
002C
107
%
0025
108
_
005F
109
>
003E
110
?
003F
111
 
7−
 


112


113


114


115


116


117


118


119


120
`
0060
121
:
003A
122
#
0023
123
@
0040
124
'
0027
125
=
003D
126
"
0022
127
 
8−
 


128
a
0061
129
b
0062
130
c
0063
131
d
0064
132
e
0065
133
f
0066
134
g
0067
135
h
0068
136
i
0069
137


138


139


140


141


142
±
00B1
143
 
9−
 


144
j
006A
145
k
006B
146
l
006C
147
m
006D
148
n
006E
149
o
006F
150
p
0070
151
q
0071
152
r
0072
153


154


155


156


157


158


159
 
A−
 


160
~
007E
161
s
0073
162
t
0074
163
u
0075
164
v
0076
165
w
0077
166
x
0078
167
y
0079
168
z
007A
169


170


171


172


173


174


175
 
B−
 
^
005E
176


177


178


179


180


181


182


183


184


185
[
005B
186
]
005D
187


188


189


190


191
 
C−
 
{
007B
192
A
0041
193
B
0042
194
C
0043
195
D
0044
196
E
0045
197
F
0046
198
G
0047
199
H
0048
200
I
0049
201
SHY
00AD
202


203


204


205


206


207
 
D−
 
}
007D
208
J
004A
209
K
004B
210
L
004C
211
M
004D
212
N
004E
213
O
004F
214
P
0050
215
Q
0051
216
R
0052
217


218


219


220


221


222


223
 
E−
 
\
005C
224
NSP
2007
225
S
0053
226
T
0054
227
U
0055
228
V
0056
229
W
0057
230
X
0058
231
Y
0059
232
Z
005A
233


234


235


236


237


238


239
 
F−
 
0
0030
240
1
0031
241
2
0032
242
3
0033
243
4
0034
244
5
0035
245
6
0036
246
7
0037
247
8
0038
248
9
0039
249


250


251


252


253


254
EO

255

비판 및 유머[편집]

오픈 소스 소프트웨어 옹호자이자 해커인 에릭 레이먼드는 자신의 "자곤 파일(Jargon File)"에서 서로 닮지도 않은 다양한 EBCDIC의 다른 버전들 때문에 초기 해커와 프로그래머는 거의 예외 없이 EBCDIC을 싫어했고, IBM은 이미 자리 잡고 있던 ASCII가 있음에도 같은 목적으로 EBCDIC를 만들었다고 언급했다.

자곤 파일 4.4.7에는 EBCDIC을 다음과 같이 정의하고 있다.

EBCDIC: /eb´s@·dik/, /eb´see`dik/, /eb´k@·dik/, n.

[Extended Binary Coded Decimal Interchange Code의 줄임말] IBM 공룡들에 사용되는 문자 집합이라고 주장되는 것. 서로 호환되지도 않은 적어도 6개의 버전이 있고, 모두 문자가 연속되지 않고 현대 컴퓨터 언어들에 중요한 몇몇 중요한 ASCII 구두점이 빠져 있는(정확히 어떤 문자가 없냐는 당신이 보고 있는 EBCDIC 버전에 따라 다름) 훌륭한 특성을 가지고 있다. IBM은 EBCDIC을 1960년대 초에 천공 카드에서 따왔고, 이미 자리잡은 ASCII 표준을 몰아내는 고객 제어 전략("커넥터 음모(connector conspiracy)" 참조)으로 널리 퍼뜨렸다. 오늘날 IBM은 열린 시스템 기반의 회사라고 주장하나 EBCDIC 변종들과 이들간 변환하는 방법에 대한 IBM 내부 기술은 여전히 내부적으로 일급 비밀로 분류되어 있고 읽기도 전에 타버리게 되어있다. 해커들은 EBCDIC이라는 이름만 들어도 얼굴이 창백해 지며 EBCDIC을 최고 순수 악의 현신으로 간주한다.

 

또 다른 잘 알려진 불평은 EBCDIC의 알파벳 문자가 ASCII처럼 순차적이지 않고 태고적 천공 카드의 인코딩을 따르고 있다는 것이다. 일례로 "I"에 해당하는 문자 코드를 1만큼 증가시키면 "J"에 해당하는 코드가 나오지 않는다. 마찬가지로 "R"과 "S" 사이에도 틈이 있다. 따라서 알파벳 문자만 훑는 간단한 루프를 작성하는 것조차 쉽지 않다.

이런 비호환성은 또한 많은 농담의 원인이 되었다. 잘 알려진 한 농담은 다음과 같다.

교수: "그래서 미국 정부가 암호화 표준을 만들기 위해 IBM에 갔습니다. 그리고 IBM은 그 결과로—"
학생: "EBCDIC을 내 놨죠!"

인포콤(Infocom)에서 만든 고전 모험 게임인 "Zork II"에도 EBCDIC 문자 집합이 나온다. "기계실"에 고대 컴퓨터들과 무슨 용도인지 알 수 없는 다른 기계들이 있다. 다음은 그 방에 대한 설명인데 이해할 수 없는 언어라는 것을 설명하기 위해 EBCDIC이 사용되었다.

여기는 시끄럽게 윙윙 거리는 여러 종류의 무거운 기계로 가득찬 방이다. 탄 저항 부품 냄새가 난다. 한 쪽 벽면을 따라 세 단추가 있는데 하나는 둥글고, 또 하나는 삼각형, 남은 하나는 사각형 모양이다. 당연하지만 각 단추 위에는 EBCDIC로 쓰여진 설명이 붙어 있다...

같이 보기[편집]

참조[편집]

바깥 고리[편집]