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

prev = BCD **확장 이진화 십진법 교환 부호**(EBCDIC, **E**xtended **B**inary **C**oded **D**ecimal **I**nterchange **C**ode)는 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비트 이진화 십진법 부호에서 유래하였다.url-status=dead
# 역사
EBCDIC('엡시딕'으로 읽는다)은 IBM에서 1963년과 1964년에 걸쳐 고안되었고 IBM System/360 계열의 메인프레임 컴퓨터와 함께 소개되었다. 별도로 개발된 7비트 인코딩 방식인 ASCII와 달리 8비트 문자열 인코딩이다. 천공 카드 상의 두 "존(zone)"과 "숫자"를 6비트에 인코딩하는 효율적인 방법으로 고안된 기존 IBM 이진화 십진법 인코딩을 확장하기 위해 만들어졌다. IBM은 ASCII 표준화 위원회의 주요 지지자였지만url-status=dead ASCII 주변장치(일례로 카드 천공기)를 System/360 출시에 맞춰 내어 놓을 수 없었다. IBM은 이 때문에 당시 EBCDIC을 사용할 수 밖에 없었다.*"...but their printers and punches were not ready to handle ASCII, and IBM just HAD to announce."* url=https://web.archive.org/web/20130526012525/http://www.trailing-edge.com/~bobbemer/P-BIT.HTM#, EBCDIC and the P-Bit, Bob Bemer System/360은 큰 성공을 거뒀고 자연히 EBCDIC도 널리 사용되었다. z시리즈나 i시리즈에 사용된 리눅스 외에 모든 IBM 메인프레임 주변장치와 운영 체제는 고유 인코딩으로 EBCDIC를 사용한다.url-status=dead하지만 소프트웨어 수준에서는 다른 인코딩 간 변환이 가능하다. 많은 하드웨어 주변장치 역시 인코딩 간 변환을 지원하며, 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 |문자표-색-제어|0 |문자표-색-제어|1 |문자표-색-제어|2 |문자표-색-제어|3 |문자표-색-제어|4 |문자표-색-제어|5 |문자표-색-제어|6 |문자표-색-제어|7 |문자표-색-제어|8 |문자표-색-제어|9 |문자표-색-제어|10 |문자표-색-제어|11 |문자표-색-제어|12 |문자표-색-제어|13 |문자표-색-제어|14 |문자표-색-제어|15 |- !1 |문자표-색-제어|16 |문자표-색-제어|17 |문자표-색-제어|18 |문자표-색-제어|19 |문자표-색-제어|20 |문자표-색-제어|21 |문자표-색-제어|22 |문자표-색-제어|23 |문자표-색-제어|24 |문자표-색-제어|25 |문자표-색-제어|26 |문자표-색-제어|27 |문자표-색-제어|28 |문자표-색-제어|29 |문자표-색-제어|30 |문자표-색-제어|31 |- !2 |문자표-색-제어|32 |문자표-색-제어|33 |문자표-색-제어|34 |문자표-색-제어|35 |문자표-색-제어|36 |문자표-색-제어|37 |문자표-색-제어|38 |문자표-색-제어|39 |문자표-색-제어|40 |문자표-색-제어|41 |문자표-색-제어|42 |문자표-색-제어|43 |문자표-색-제어|44 |문자표-색-제어|45 |문자표-색-제어|46 |문자표-색-제어|47 |- !3 |문자표-색-제어|48 |문자표-색-제어|49 |문자표-색-제어|50 |문자표-색-제어|51 |문자표-색-제어|52 |문자표-색-제어|53 |문자표-색-제어|54 |문자표-색-제어|55 |문자표-색-제어|56 |문자표-색-제어|57 |문자표-색-제어|58 |문자표-색-제어|59 |문자표-색-제어|60 |문자표-색-제어|61 |문자표-색-제어|62 |문자표-색-제어|63 |- !4 |문자표-색-구두점|64 |문자표-색-구두점|65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 |문자표-색-구두점|75 |문자표-색-구두점|110 |문자표-색-구두점|111 |- !7 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 |문자표-색-구두점|122 | |123 |문자표-색-구두점|124 |문자표-색-구두점|125 |문자표-색-구두점|126 |문자표-색-구두점|127 |- !8 | 128 |문자표-색-알파벳|129 |문자표-색-알파벳|130 |문자표-색-알파벳|131 |문자표-색-알파벳|132 |문자표-색-알파벳|133 |문자표-색-알파벳|134 |문자표-색-알파벳|135 |문자표-색-알파벳|136 |문자표-색-알파벳|137 | 138 | 139 | 140 | 141 | 142 | 143 |- !9 | 144 |문자표-색-알파벳|145 |문자표-색-알파벳|146 |문자표-색-알파벳|147 |문자표-색-알파벳|148 |문자표-색-알파벳|149 |문자표-색-알파벳|150 |문자표-색-알파벳|151 |문자표-색-알파벳|152 |문자표-색-알파벳|153 | 154 | 155 | 156 | 157 | 158 | 159 |- !A | 160 | 161 |문자표-색-알파벳|162 |문자표-색-알파벳|163 |문자표-색-알파벳|164 |문자표-색-알파벳|165 |문자표-색-알파벳|166 |문자표-색-알파벳|167 |문자표-색-알파벳|168 |문자표-색-알파벳|169 | 170 | 171 | 172 | 173 | 174 | 175 |- !B | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 |- !C | 문자표-칸3|007B|{|192 |문자표-색-알파벳|193 |문자표-색-알파벳|194 |문자표-색-알파벳|195 |문자표-색-알파벳|196 |문자표-색-알파벳|197 |문자표-색-알파벳|198 |문자표-색-알파벳|199 |문자표-색-알파벳|200 |문자표-색-알파벳|201 |문자표-색-구두점|202 | 203 | 204 | 205 | 206 | 207 |- !D | 문자표-칸3|007D|}|208 |문자표-색-알파벳|209 |문자표-색-알파벳|210 |문자표-색-알파벳|211 |문자표-색-알파벳|212 |문자표-색-알파벳|213 |문자표-색-알파벳|214 |문자표-색-알파벳|215 |문자표-색-알파벳|216 |문자표-색-알파벳|217 | 218 | 219 | 220 | 221 | 222 | 223 |- !E | 224 | 225 |문자표-색-알파벳|226 |문자표-색-알파벳|227 |문자표-색-알파벳|228 |문자표-색-알파벳|229 |문자표-색-알파벳|230 |문자표-색-알파벳|231 |문자표-색-알파벳|232 |문자표-색-알파벳|233 | 234 | 235 | 236 | 237 | 238 | 239 |- !F |문자표-색-숫자|240 |문자표-색-숫자|241 |문자표-색-숫자|242 |문자표-색-숫자|243 |문자표-색-숫자|244 |문자표-색-숫자|245 |문자표-색-숫자|246 |문자표-색-숫자|247 |문자표-색-숫자|248 |문자표-색-숫자|249 | 250 | 251 | 252 | 253 | 254 |문자표-색-제어 |255 |}
# 비판 및 유머
오픈 소스 소프트웨어 옹호자이자 해커인 에릭 레이먼드는 자신의 "자곤 파일(Jargon File)"에서 서로 닮지도 않은 다양한 EBCDIC의 다른 버전들 때문에 초기 해커와 프로그래머는 거의 예외 없이 EBCDIC을 싫어했고, IBM은 이미 자리 잡고 있던 ASCII가 있음에도 같은 목적으로 EBCDIC를 만들었다고 언급했다. 자곤 파일 4.4.7에는 EBCDIC을 다음과 같이 정의하고 있다. 출처=The Jargon file 4.4.7 또 다른 잘 알려진 불평은 EBCDIC의 알파벳 문자가 ASCII처럼 순차적이지 않고 태고적 천공 카드의 인코딩을 따르고 있다는 것이다. 일례로 "I"에 해당하는 문자 코드를 1만큼 증가시키면 "J"에 해당하는 코드가 나오지 않는다. 마찬가지로 "R"과 "S" 사이에도 틈이 있다. 따라서 알파벳 문자만 훑는 간단한 루프를 작성하는 것조차 쉽지 않다. 이런 비호환성은 또한 많은 농담의 원인이 되었다. 잘 알려진 한 농담은 다음과 같다. :교수: "그래서 미국 정부가 암호화 표준을 만들기 위해 IBM에 갔습니다. 그리고 IBM은 그 결과로—"
학생: "EBCDIC을 내 놨죠!" 인포콤(Infocom)에서 만든 고전 모험 게임인 "Zork II"에도 EBCDIC 문자 집합이 나온다. "기계실"에 고대 컴퓨터들과 무슨 용도인지 알 수 없는 다른 기계들이 있다. 다음은 그 방에 대한 설명인데 이해할 수 없는 언어라는 것을 설명하기 위해 EBCDIC이 사용되었다. 인용구=여기는 시끄럽게 윙윙 거리는 여러 종류의 무거운 기계로 가득찬 방이다. 탄 저항 부품 냄새가 난다. 한 쪽 벽면을 따라 세 단추가 있는데 하나는 둥글고, 또 하나는 삼각형, 남은 하나는 사각형 모양이다. 당연하지만 각 단추 위에는 EBCDIC로 쓰여진 설명이 붙어 있다...