Jump to content

EBCDIC

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Jacona (talk | contribs) at 18:40, 12 April 2016 (removed template). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Extended Binary Coded Decimal Interchange Code (EBCDIC) is an eight-bit character encoding used mainly on IBM mainframe and IBM midrange computer operating systems. EBCDIC descended from the code used with punched cards and the corresponding six bit binary-coded decimal code used with most of IBM's computer peripherals of the late 1950s and early 1960s.[1] It is also employed on various non-IBM platforms such as Fujitsu-Siemens' BS2000/OSD, OS-IV, MSP, and MSP-EX, and Unisys VS/9 and MCP.

History

EBCDIC /ˈɛbs[invalid input: 'ɨ']dɪk/ was devised in 1963 and 1964 by IBM and was announced with the release of the IBM System/360 line of mainframe computers. It is an eight-bit character encoding, in contrast to, and developed separately from, the 7-bit ASCII encoding scheme. It was created to extend the existing binary-coded decimal (BCD) interchange code, or BCDIC, which itself was devised as an efficient means of encoding the two zone and number punches on punched cards into 6 bits.

While IBM was a chief proponent of the ASCII standardization committee,[2] the company did not have time to prepare ASCII peripherals (such as card punch machines) to ship with its System/360 computers, so the company settled on EBCDIC.[3] The System/360 became wildly successful, and together with clones such as RCA Spectra 70, ICL System 4, and Fujitsu FACOM, thus so did EBCDIC.

All IBM mainframe and midrange peripherals and operating systems use EBCDIC as their inherent encoding[4] (with toleration for ASCII, for example, ISPF in z/OS can browse and edit both EBCDIC and ASCII encoded files). Software and many hardware peripherals can translate to and from encodings, and modern mainframes (such as IBM zSeries) include processor instructions, at the hardware level, to accelerate translation between character sets.

There is an EBCDIC-oriented Unicode Transformation Format called UTF-EBCDIC proposed by the Unicode consortium, designed to allow easy updating of EBCDIC software to handle Unicode, but not intended to be used in open interchange environments. Even on systems with extensive EBCDIC support, it has not been popular. For example, z/OS supports Unicode (preferring UTF-16 specifically), but z/OS only has limited support for UTF-EBCDIC.

IBM AIX running on the RS/6000 and its descendants including the IBM Power Systems, Linux running on z Systems, and operating systems running on the IBM PC and its descendants use ASCII, as did AIX/370 and AIX/390 running on System/370 and System/390 mainframes.

Compatibility with ASCII

The fact that all the code points were different was less of a problem for inter-operating with ASCII than the fact that sorting EBCDIC put lowercase letters before uppercase letters and letters before numbers, exactly the opposite of ASCII.

Software portability and data exchange are hindered by EBCDIC's lack of codes for several symbols (such as the brace characters) commonly used in programming and in network communications.

The gaps between some letters made simple constructions that worked in ASCII fail on EBCDIC. For example, 'Z' minus 'A' was 40, not 25. This sometimes caused problems when porting software from ASCII systems.

All ASCII codes stored within an eight-bit byte had nonnegative values on systems such as the PDP-11 that treated bytes as signed quantities. Software on those platforms often took advantage of that property, causing problems when it was ported to EBCDIC-based environments where many character codes had a 1 as the "sign" bit.

By using all eight bits EBCDIC may have encouraged the use of the eight-bit byte by IBM, while ASCII was more likely to be adopted by systems with 36 bits (as five seven-bit ASCII characters fit into one word). As eight-bit bytes became widespread, ASCII systems sometimes used the "unused" bit for other purposes, thus making it more difficult to transition to larger character sets.[citation needed]

Codepage layout

The table below is based on CCSID 037, one of the code page variants of EBCDIC; it shows only the basic (English) EBCDIC characters. Characters 00–3F and FF are controls, 40 is space, 41 is no-break space (RSP: "Required Space"), E1 is numeric space (NSP: "Numeric Space"), and CA is soft hyphen. Characters are shown with their equivalent Unicode codes. Unassigned codes are typically filled with international or region-specific characters in the various EBCDIC code page variants, but the punctuation marks and other special characters, such as cent sign, are often moved around as well; only the letters and numbers and space have the same assignments in all EBCDIC code pages.

In each table cell below, the first row is an abbreviation for a control code or (for printable characters) the character itself; the second row is the Unicode code; and the third row is decimal value of the EBCDIC code.

EBCDIC
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_ Template:Chset-color-ctrl|NUL
0000
0
Template:Chset-color-ctrl|SOH
0001
1
Template:Chset-color-ctrl|STX
0002
2
Template:Chset-color-ctrl|ETX
0003
3
Template:Chset-color-ctrl|SEL
 
4
Template:Chset-color-ctrl|HT
0009
5
Template:Chset-color-ctrl|RNL
 
6
Template:Chset-color-ctrl|DEL
007F
7
Template:Chset-color-ctrl|GE
 
8
Template:Chset-color-ctrl|SPS
 
9
Template:Chset-color-ctrl|RPT
 
10
Template:Chset-color-ctrl|VT
000B
11
Template:Chset-color-ctrl|FF
000C
12
Template:Chset-color-ctrl|CR
000D
13
Template:Chset-color-ctrl|SO
000E
14
Template:Chset-color-ctrl|SI
000F
15
1_ Template:Chset-color-ctrl|DLE
0010
16
Template:Chset-color-ctrl|DC1
0011
17
Template:Chset-color-ctrl|DC2
0012
18
Template:Chset-color-ctrl|DC3
0013
19
Template:Chset-color-ctrl|RES ENP
 
20
Template:Chset-color-ctrl|NL
0085
21
Template:Chset-color-ctrl|BS
0008
22
Template:Chset-color-ctrl|POC
 
23
Template:Chset-color-ctrl|CAN
0018
24
Template:Chset-color-ctrl|EM
0019
25
Template:Chset-color-ctrl|UBS
 
26
Template:Chset-color-ctrl|CU1
 
27
Template:Chset-color-ctrl|IFS
001C
28
Template:Chset-color-ctrl|IGS
001D
29
Template:Chset-color-ctrl|IRS
001E
30
Template:Chset-color-ctrl|IUS ITB
001F
31
2_ Template:Chset-color-ctrl|DS
 
32
Template:Chset-color-ctrl|SOS
 
33
Template:Chset-color-ctrl|FS
 
34
Template:Chset-color-ctrl|WUS
 
35
Template:Chset-color-ctrl|BYP INP
 
36
Template:Chset-color-ctrl|LF
000A
37
Template:Chset-color-ctrl|ETB
0017
38
Template:Chset-color-ctrl|ESC
001B
39
Template:Chset-color-ctrl|SA
 
40
Template:Chset-color-ctrl|SFE
 
41
Template:Chset-color-ctrl|SM SW
 
42
Template:Chset-color-ctrl|CSP
 
43
Template:Chset-color-ctrl|MFA
 
44
Template:Chset-color-ctrl|ENQ
0005
45
Template:Chset-color-ctrl|ACK
0006
46
Template:Chset-color-ctrl|BEL
0007
47
3_ Template:Chset-color-ctrl|
 
48
Template:Chset-color-ctrl|
 
49
Template:Chset-color-ctrl|SYN
0016
50
Template:Chset-color-ctrl|IR
 
51
Template:Chset-color-ctrl|PP
 
52
Template:Chset-color-ctrl|TRN
 
53
Template:Chset-color-ctrl|NBS
 
54
Template:Chset-color-ctrl|EOT
0004
55
Template:Chset-color-ctrl|SBS
 
56
Template:Chset-color-ctrl|IT
 
57
Template:Chset-color-ctrl|RFF
 
58
Template:Chset-color-ctrl|CU3
 
59
Template:Chset-color-ctrl|DC4
0014
60
Template:Chset-color-ctrl|NAK
0015
61
Template:Chset-color-ctrl|
 
62
Template:Chset-color-ctrl|SUB
001A
63
4_ Template:Chset-color-punct|SP
0020
64
Template:Chset-color-punct|RSP
00A0
65
Template:Chset-color-undef|
 
66
Template:Chset-color-undef|
 
67
Template:Chset-color-undef|
 
68
Template:Chset-color-undef|
 
69
Template:Chset-color-undef|
 
70
Template:Chset-color-undef|
 
71
Template:Chset-color-undef|
 
72
Template:Chset-color-undef|
 
73
Template:Chset-color-undef|
 
74
Template:Chset-color-punct|.
002E
75
Template:Chset-color-punct|<
003C
76
Template:Chset-color-punct|(
0028
77
Template:Chset-color-punct|+
002B
78
|
007C
79
5_ Template:Chset-color-punct|&
0026
80
Template:Chset-color-undef|
 
81
Template:Chset-color-undef|
 
82
Template:Chset-color-undef|
 
83
Template:Chset-color-undef|
 
84
Template:Chset-color-undef|
 
85
Template:Chset-color-undef|
 
86
Template:Chset-color-undef|
 
87
Template:Chset-color-undef|
 
88
Template:Chset-color-undef|
 
89
!
0021
90
$
0024
91
Template:Chset-color-punct|*
002A
92
Template:Chset-color-punct|)
0029
93
Template:Chset-color-punct|;
003B
94
¬
00AC
95
6_ Template:Chset-color-punct|-
002D
96
Template:Chset-color-punct|/
002F
97
Template:Chset-color-undef|
 
98
Template:Chset-color-undef|
 
99
Template:Chset-color-undef|
 
100
Template:Chset-color-undef|
 
101
Template:Chset-color-undef|
 
102
Template:Chset-color-undef|
 
103
Template:Chset-color-undef|
 
104
Template:Chset-color-undef|
 
105
Template:Chset-color-punct|¦
00A6
106
Template:Chset-color-punct|,
002C
107
Template:Chset-color-punct|%
0025
108
Template:Chset-color-punct|_
005F
109
Template:Chset-color-punct|>
003E
110
Template:Chset-color-punct|?
003F
111
7_ Template:Chset-color-undef|
 
112
Template:Chset-color-undef|
 
113
Template:Chset-color-undef|
 
114
Template:Chset-color-undef|
 
115
Template:Chset-color-undef|
 
116
Template:Chset-color-undef|
 
117
Template:Chset-color-undef|
 
118
Template:Chset-color-undef|
 
119
Template:Chset-color-undef|
 
120
`
0060
121
Template:Chset-color-punct|:
003A
122
#
0023
123
Template:Chset-color-punct|@
0040
124
Template:Chset-color-punct|'
0027
125
Template:Chset-color-punct|=
003D
126
Template:Chset-color-punct|"
0022
127
8_ Template:Chset-color-undef|
 
128
Template:Chset-color-alpha|a
0061
129
Template:Chset-color-alpha|b
0062
130
Template:Chset-color-alpha|c
0063
131
Template:Chset-color-alpha|d
0064
132
Template:Chset-color-alpha|e
0065
133
Template:Chset-color-alpha|f
0066
134
Template:Chset-color-alpha|g
0067
135
Template:Chset-color-alpha|h
0068
136
Template:Chset-color-alpha|i
0069
137
Template:Chset-color-undef|
 
138
Template:Chset-color-undef|
 
139
Template:Chset-color-undef|
 
140
Template:Chset-color-undef|
 
141
Template:Chset-color-undef|
 
142
±
00B1
143
9_ Template:Chset-color-undef|
 
144
Template:Chset-color-alpha|j
006A
145
Template:Chset-color-alpha|k
006B
146
Template:Chset-color-alpha|l
006C
147
Template:Chset-color-alpha|m
006D
148
Template:Chset-color-alpha|n
006E
149
Template:Chset-color-alpha|o
006F
150
Template:Chset-color-alpha|p
0070
151
Template:Chset-color-alpha|q
0071
152
Template:Chset-color-alpha|r
0072
153
Template:Chset-color-undef|
 
154
Template:Chset-color-undef|
 
155
Template:Chset-color-undef|
 
156
Template:Chset-color-undef|
 
157
Template:Chset-color-undef|
 
158
Template:Chset-color-undef|
 
159
A_ Template:Chset-color-undef|
 
160
~
007E
161
Template:Chset-color-alpha|s
0073
162
Template:Chset-color-alpha|t
0074
163
Template:Chset-color-alpha|u
0075
164
Template:Chset-color-alpha|v
0076
165
Template:Chset-color-alpha|w
0077
166
Template:Chset-color-alpha|x
0078
167
Template:Chset-color-alpha|y
0079
168
Template:Chset-color-alpha|z
007A
169
Template:Chset-color-undef|
 
170
Template:Chset-color-undef|
 
171
Template:Chset-color-undef|
 
172
Template:Chset-color-undef|
 
173
Template:Chset-color-undef|
 
174
Template:Chset-color-undef|
 
175
B_ ^
005E
176
Template:Chset-color-undef|
 
177
Template:Chset-color-undef|
 
178
Template:Chset-color-undef|
 
179
Template:Chset-color-undef|
 
180
Template:Chset-color-undef|
 
181
Template:Chset-color-undef|
 
182
Template:Chset-color-undef|
 
183
Template:Chset-color-undef|
 
184
Template:Chset-color-undef|
 
185
[
005B
186
]
005D
187
Template:Chset-color-undef|
 
188
Template:Chset-color-undef|
 
189
Template:Chset-color-undef|
 
190
Template:Chset-color-undef|
 
191
C_ {
007B
192
Template:Chset-color-alpha|A
0041
193
Template:Chset-color-alpha|B
0042
194
Template:Chset-color-alpha|C
0043
195
Template:Chset-color-alpha|D
0044
196
Template:Chset-color-alpha|E
0045
197
Template:Chset-color-alpha|F
0046
198
Template:Chset-color-alpha|G
0047
199
Template:Chset-color-alpha|H
0048
200
Template:Chset-color-alpha|I
0049
201
Template:Chset-color-punct|SHY
00AD
202
Template:Chset-color-undef|
 
203
Template:Chset-color-undef|
 
204
Template:Chset-color-undef|
 
205
Template:Chset-color-undef|
 
206
Template:Chset-color-undef|
 
207
D_ }
007D
208
Template:Chset-color-alpha|J
004A
209
Template:Chset-color-alpha|K
004B
210
Template:Chset-color-alpha|L
004C
211
Template:Chset-color-alpha|M
004D
212
Template:Chset-color-alpha|N
004E
213
Template:Chset-color-alpha|O
004F
214
Template:Chset-color-alpha|P
0050
215
Template:Chset-color-alpha|Q
0051
216
Template:Chset-color-alpha|R
0052
217
Template:Chset-color-undef|
 
218
Template:Chset-color-undef|
 
219
Template:Chset-color-undef|
 
220
Template:Chset-color-undef|
 
221
Template:Chset-color-undef|
 
222
Template:Chset-color-undef|
 
223
E_ \
005C
224
NSP
2007
225
Template:Chset-color-alpha|S
0053
226
Template:Chset-color-alpha|T
0054
227
Template:Chset-color-alpha|U
0055
228
Template:Chset-color-alpha|V
0056
229
Template:Chset-color-alpha|W
0057
230
Template:Chset-color-alpha|X
0058
231
Template:Chset-color-alpha|Y
0059
232
Template:Chset-color-alpha|Z
005A
233
Template:Chset-color-undef|
 
234
Template:Chset-color-undef|
 
235
Template:Chset-color-undef|
 
236
Template:Chset-color-undef|
 
237
Template:Chset-color-undef|
 
238
Template:Chset-color-undef|
 
239
F_ Template:Chset-color-digit|0
0030
240
Template:Chset-color-digit|1
0031
241
Template:Chset-color-digit|2
0032
242
Template:Chset-color-digit|3
0033
243
Template:Chset-color-digit|4
0034
244
Template:Chset-color-digit|5
0035
245
Template:Chset-color-digit|6
0036
246
Template:Chset-color-digit|7
0037
247
Template:Chset-color-digit|8
0038
248
Template:Chset-color-digit|9
0039
249
Template:Chset-color-undef|
 
250
Template:Chset-color-undef|
 
251
Template:Chset-color-undef|
 
252
Template:Chset-color-undef|
 
253
Template:Chset-color-undef|
 
254
Template:Chset-color-ctrl |EO
 
255
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F

Criticism and humor

Open-source-software advocate and hacker Eric S. Raymond writes in his Jargon File that EBCDIC was almost universally loathed by early hackers and programmers. The Jargon File 4.4.7 gives the following definition:[5]

EBCDIC: /eb´s@·dik/, /eb´see`dik/, /eb´k@·dik/, n. [abbreviation, Extended Binary Coded Decimal Interchange Code] An alleged character set used on IBM dinosaurs. It exists in at least six mutually incompatible versions, all featuring such delights as non-contiguous letter sequences and the absence of several ASCII punctuation characters fairly important for modern computer languages (exactly which characters are absent varies according to which version of EBCDIC you're looking at). IBM adapted EBCDIC from punched card code in the early 1960s and promulgated it as a customer-control tactic (see connector conspiracy), spurning the already established ASCII standard. Today, IBM claims to be an open-systems company, but IBM's own description of the EBCDIC variants and how to convert between them is still internally classified top-secret, burn-before-reading. Hackers blanch at the very name of EBCDIC and consider it a manifestation of purest evil.

— The Jargon file 4.4.7

EBCDIC design was also the source of many jokes. One such joke went:

Professor: "So the American government went to IBM to come up with an encryption standard, and they came up with—"
Student: "EBCDIC!"

References to the EBCDIC character set are made in the classic Infocom adventure game series Zork. In the "Machine Room" in Zork II, EBCDIC is used to imply an incomprehensible language:

This is a large room full of assorted heavy machinery, whirring noisily. The room smells of burned resistors. Along one wall are three buttons which are, respectively, round, triangular, and square. Naturally, above these buttons are instructions written in EBCDIC...

A similar description can be found in the "Maintenance Room" in Zork:

This is what appears to have been the maintenance room for Flood Control Dam #3, judging by the assortment of tool chests around the room. Apparently, this room has been ransacked recently, for most of the valuable equipment is gone. On the wall in front of you is a group of buttons, which are labelled in EBCDIC. However, they are of different colors: Blue, Yellow, Brown, and Red.

See also

References

  1. ^ Bemer, Bob. "EBCDIC and the P-Bit". Retrieved July 2, 2013.
  2. ^ They had 4 staff on the final 21-member ASA X3.2 sub-committee
  3. ^ "...but their printers and punches were not ready to handle ASCII, and IBM just HAD to announce.", EBCDIC and the P-Bit, Bob Bemer
  4. ^ IBMnt (2008). "IBM confirms the use of EBCDIC in their mainframes as a default practice". Retrieved 2008-06-16.[dead link]
  5. ^ "EBCDIC". Jargon File.