EBCDIC
From Free net encyclopedia
EBCDIC (Extended Binary Coded Decimal Interchange Code) is an 8-bit character encoding (code page) used on IBM mainframe operating systems, like z/OS, OS/390, VM and VSE, as well as IBM minicomputer operating systems like OS/400 and i5/OS. It is also employed on various non-IBM platforms such as Fujitsu-Siemens' BS2000/OSD, HP MPE/iX, and Unisys MCP. It descended from punched cards and the corresponding six bit binary-coded decimal code that most of IBM's computer peripherals of the late 1950s and early 1960s used.
Contents |
History
EBCDIC was devised in 1963 and 1964 by IBM and was announced with the release of the IBM System/360 line of mainframe computers. It was created to extend the Binary-Coded Decimal that existed at the time. EBCDIC was developed separately from ASCII. EBCDIC is an 8-bit encoding, versus the 7-bit encoding of ASCII.
All IBM mainframe peripherals and operating systems use EBCDIC. Their operating systems provide ASCII and Unicode modes for translating between different encodings. Translation can occur within the hardware peripheral or in the software as required by the application.
At the time it was devised, EBCDIC made it relatively easy to enter data into a computer with punch cards. Since punch cards are almost never used on mainframes anymore, EBCDIC is used in modern mainframes solely for backwards compatibility. It has no technical advantage over ASCII-based code pages such as the ISO-8859 series or Unicode. As with single-byte extended ASCII codepages, most EBCDIC codepages only allow up to 2 languages (English and one other language) to be used in a database or text file.
Where true support for multilingual text is desired, a system supporting far more characters is needed. Generally this is done with some form of Unicode support. There is an EBCDIC Unicode Transformation Format called UTF-EBCDIC proposed by the Unicode consortium, but it is not intended to be used in open interchange environments, and even on EBCDIC based systems, it is almost never used. IBM mainframes have some support for UTF-16, but they do not support UTF-EBCDIC natively.
Technical details
EBCDIC code pages and ASCII-based code pages are incompatible with each other. Since computers only understand numbers, these codepages assign a character to these numbers. The same byte values are interpreted as different characters depending on the codepage used. Data stored in EBCDIC require a code page conversion before the text can be viewed on ASCII based machines, like a personal computer.
A single EBCDIC byte occupies eight bits, which are divided in two halves or nibbles. The first four bits is called the zone and represent the category of the character, whereas the last four bits is called the digit and identify the specific character.
There is a nice correspondence between hexadecimal character codes and punch card codes for EBCDIC. This was an important feature at the time the EBCDIC scheme was created. An IBM card punch could make a 12-row punch card with up to 2 punches per column, the first punch somewhere in the first 3 rows (called the zone) and the second punch somewhere in the last 9 rows (called the number). The zone could thus be considered a value from 0 to 3, and the number a value from 0 to 9, where 0 means no punch, and non-zero means the corresponding row was punched. The initial version of EBCDIC was just (0xf-zone)<<4+number and defined only the lower-left 10x4 part of the table shown below (the zone was apparently reversed so the letters would at least be in alphabetic order).
There are a number of different versions of EBCDIC, customized for different countries. Some East Asian countries use a double byte extension of EBCDIC to allow display of Chinese, Japanese and Korean scripts for their mainframes. In the double byte extension of EBCDIC, there are shift codes [0x0E,0x0F] to shift between the single byte and double byte modes.
IBM typically names all of its code pages with a number called a CCSID (Coded Character Set IDentifier). It is important to note that the same CCSID can have different character positions in a codepage. For example, the newline character can be a different byte value in z/OS UNIX System Services versus the other EBCDIC based operating systems. This becomes an issue when transferring EBCDIC based text data between machines.
Codepage layout
This is CCSID 500, a variant of EBCDIC. Characters 0x00–0x3F and 0xFF are controls, 0x40 is space, 0x41 is no-break space, 0xCA is soft hyphen.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | ||
40 | â | ä | à | á | ã | å | ç | ñ | [ | . | < | ( | + | ! | |||
50 | & | é | ê | ë | è | í | î | ï | ì | ß | ] | $ | * | ) | ; | ^ | |
60 | - | / | Â | Ä | À | Á | Ã | Å | Ç | Ñ | ¦ | , | % | _ | > | ? | |
70 | ø | É | Ê | Ë | È | Í | Î | Ï | Ì | ` | : | # | @ | ' | = | " | |
80 | Ø | a | b | c | d | e | f | g | h | i | « | » | ð | ý | þ | ± | |
90 | ° | j | k | l | m | n | o | p | q | r | ª | º | æ | ¸ | Æ | ¤ | |
A0 | µ | ~ | s | t | u | v | w | x | y | z | ¡ | ¿ | Ð | Ý | Þ | ® | |
B0 | ¢ | £ | ¥ | · | © | § | ¶ | ¼ | ½ | ¾ | ¬ | | | ¯ | ¨ | ´ | × | |
C0 | { | A | B | C | D | E | F | G | H | I | | ô | ö | ò | ó | õ | |
D0 | } | J | K | L | M | N | O | P | Q | R | ¹ | û | ü | ù | ú | ÿ | |
E0 | \ | ÷ | S | T | U | V | W | X | Y | Z | ² | Ô | Ö | Ò | Ó | Õ | |
F0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ³ | Û | Ü | Ù | Ú |
See also
- EBCDIC-codepages with Latin-1-charset
- codepage 037 (English, Portuguese)
- codepage 285 (Ireland, United Kingdom)
External links
- F.0 Appendix F. Code Pages from AS/400 International Application Development V4R2
- ICU Converter Explorer Contains more information about EBCDIC, including DBCS EBCDIC (Double Byte Character Set EBCDIC)
- ICU Charset Mapping Tables Contains Unicode mapping tables for EBCDIC and many other character sets
- LegacyJ- EBCDIC Table
- Computer Character Set Table
- Unicode Technical Report #16: UTF-EBCDIC
- EBCDIC-to-ASCII Test Tool Simple on-line tool outputs ASCII from EBCDIC input. 2000 character limit.
- EBCDIC-codepages with Latin-1-charset (JavaScript)
- ZIPped version
- Blog resource for EBCDICcs:EBCDIC
de:Extended Binary Coded Decimals Interchange Code es:EBCDIC eo:EBCDIC fr:Extended Binary Coded Decimal Interchange Code nl:EBCDIC ja:EBCDIC pl:Kod EBCDIC pt:Extended Binary Coded Decimal Interchange Code ru:EBCDIC sv:EBCDIC tr:EBCDIC zh:EBCDIC