Extended Binary Coded Decimal Interchange Code

De knowledge
Aller à la navigation Aller à la recherche

Ce code parait assez absurde mais....

Son codage est donné sur sa page Wikipédia:

Principe

Les nombres hexadécimaux sur 4 digit donnés dans chaque case correspond à l'encodage "UNICODE".

Jeu de caractères EBCDIC (variante compatible avec l’UTF-EBCDIC).
Quartet
haut
Quartet bas (toutes les valeurs sont en hexadécimal)
...0 ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...A ...B ...C ...D ...E ...F
0... NUL
0000
SOH
0001
STX
0002
ETX
0003
ST
009C
HT
0009
SSA
0086
DEL
007F
EPA
0097
RI
008D
SS2
008E
VT
000B
FF
000C
CR
000D
SO
000E
SI
000F
1... DLE
0010
DC1
0011
DC2
0012
DC3
0013
OSC
009D
LF
000A
BS
0008
ESA
0087
CAN
0018
EM
0019
PU2
0092
SS3
008F
FS
001C
GS
001D
RS
001E
US
001F
2... PAD
0080
HOP
0081
BPH
0082
NBH
0083
IND
0084
NEL
0085
ETB
0017
ESC
001B
HTS
0088
HTJ
0089
VTS
008A
PLD
008B
PLU
008C
ENQ
0005
ACK
0006
BEL
0007
3... DCS
0090
PU1
0091
SYN
0016
STS
0093
CCH
0094
MW
0095
SPA
0096
EOT
0004
SOS
0098
SGCI
0099
SCI
009A
CSI
009B
DC4
0014
NAK
0015
PM
009E
SUB
001A
4... SP
0020
NBSP
00A0
¡
00A1
¢
00A2
£
00A3
¤
00A4
¥
00A5
¦
00A6
§
00A7
¨
00A8
©
00A9
.
002E
<
003C
(
0028
+
002B
|
007C
5... &
0026
ª
00AA
«
00AB
¬
00AC
SHY
00AD
®
00AE
¯
00AF
°
00B0
±
00B1
²
00B2
!
0021
$
0024
*
002A
)
0029
;
003B
^
005E
6... -
002D
/
002F
³
00B3
´
00B4
µ
00B5

00B6
·
00B7
¸
00B8
¹
00B9
º
00BA
»
00BB
,
002C
%
0025
_
005F
>
003E
?
003F
7... ¼
00BC
½
00BD
¾
00BE
¿
00BF
À
00C0
Á
00C1
Â
00C2
Ã
00C3
Ä
00C4
`
0060
:
003A
#
0023
@
0040
'
0027
=
003D
"
0022
8... Å
00C5
a
0061
b
0062
c
0063
d
0064
e
0065
f
0066
g
0067
h
0068
i
0069
Æ
00C6
Ç
00C7
È
00C8
É
00C9
Ê
00CA
Ë
00CB
9... Ì
00CC
j
006A
k
006B
l
006C
m
006D
n
006E
o
006F
p
0070
q
0071
r
0072
Í
00CD
Î
00CE
Ï
00CF
Ð
00D0
Ñ
00D1
Ò
00D2
A... Ó
00D3
~
007E
s
0073
t
0074
u
0075
v
0076
w
0077
x
0078
y
0079
z
007A
Ô
00D4
Õ
00D5
Ö
00D6
[
005B
×
00D7
Ø
00D8
B... Ù
00D9
Ú
00DA
Û
00DB
Ü
00DC
Ý
00DD
Þ
00DE
ß
00DF
à
00E0
á
00E1
â
00E2
ã
00E3
ä
00E4
å
00E5
]
005D
æ
00E6
ç
00E7
C... {
007B
A
0041
B
0042
C
0043
D
0044
E
0045
F
0046
G
0047
H
0048
I
0049
è
00E8
é
00E9
ê
00EA
ë
00EB
ì
00EC
í
00ED
D... }
007D
J
004A
K
004B
L
004C
M
004D
N
004E
O
004F
P
0050
Q
0051
R
0052
î
00EE
ï
00EF
ð
00F0
ñ
00F1
ò
00F2
ó
00F3
E... \
005C
ô
00F4
S
0053
T
0054
U
0055
V
0056
W
0057
X
0058
Y
0059
Z
005A
õ
00F5
ö
00F6
÷
00F7
ø
00F8
ù
00F9
ú
00FA
F... 0
0030
1
0031
2
0032
3
0033
4
0034
5
0035
6
0036
7
0037
8
0038
9
0039
û
00FB
ü
00FC
ý
00FD
þ
00FE
ÿ
00FF
APC
009F

Notes :

  • Les caractères de contrôle de l’EBCDIC sont indiqués sur fond rouge (commandes C0) ou mauve (commandes C1).
  • Les positions invariantes de l’Modèle:Nobr ou de l’Modèle:Nobr sont généralement invariantes dans les versions de l’EBCDIC. Elles sont indiquées en fond blanc.
  • Les positions variantes de l’EBCDIC indiquent en italique le point de code Unicode correspondant uniquement à cette variante :
    • Les caractères variants des différentes versions correspondantes de l’Modèle:Nobr sont affichés sur fond jaune (le caractère affiché est celui de l’EBCDIC Modèle:Nobr ou de l’ASCII).
      • Le caractère “Modèle:Lang” U+0022 (codé 0x7F dans la plupart des variantes de l’EBCDIC) n’est pas variant dans les jeux de caractères compatibles Modèle:Nobr, mais varie dans la version turque de l’EBCDIC.
      • Les minuscules latines U+0061 à U+007A (codées 0x81..0x89, 0x91..0x99, 0xA2..0xA9 dans la plupart des variantes de l’EBCDIC) ne sont pas variants dans les jeux de caractères compatibles Modèle:Nobr, mais varient dans les versions japonaises (hiragana/katakana) et cyrilliques de l’EBCDIC (qui y codent d’autres lettres nécessaires à ces écritures).
    • Les caractères variants des différentes versions étendues de l’EBCDIC sont affichés sur fond vert (le caractère affiché est celui de l’UTF-EBCDIC interprété comme caractère l’ISO/CEI 8859-1). Certains caractères étaient différents dans la version initiale de l’EBCDIC qui y plaçait des symboles spéciaux. Les variantes Modèle:Nobr Modèle:Nobr les plus connues de l’EBCDIC y utilisent ainsi une assignation différente pour de tels symboles.

Tout cela semble manquer de logique surtout quand on nous explique que la raison profonde est le fait que l'on codait les programmes avec des cartes perforées. Wikipédia sur la même page nous montre une carte perforée affichant une partie du jeu de caractère....

Blue-punch-card-front-horiz.png

Personnellement, et au premiers abord, ca ne ma semble pas si trivial!

En fait ce n'est pas vraiment du binaire sur la carte!

Les lignes sont en deux groupes

  • Les lignes 1 à 9 de la carte correspondent à une valeur décimale (on additionne les chiffres et ca donne la position sur une ligne du tableau EBCEDIC)
  • Les deux lignes du haut (sans chiffre) et la ligne 0 sont plutôt a comprendre comme du binaire et donne la ligne a choisir dans le tableau EBECEDIC.

Et on à les règles :

  1. Jamais une colonne ne doit être vide (sans trous). En fait le moteur de lecture fait avancer la carte jusqu'à ce qu'il y ai quelque chose à lire. Si on oublie une colonne ce sera juste ignoré. (ca correspond au 00 du tableau EBECEDIC)
  2. Un chiffre ou une lettre majuscule correspond à un seul trou dans les lignes 1 à 9 et un trou dans les lignes L1, L2 et 0
  3. Une colonne avec seulement des trous est une colonne a passer
un 1 correspond à un trou cas ou les lignes 0 à 9 ne contiennent qu'un seul trou.
Première

ligne

Seconde

ligne

Troisième

ligne "0"

Description
0 0 0 C'est la ligne F.. donc les chiffres de 0 à 9
1 0 0 La ligne C.. les lettres de A à J (et le "{" correspond à un trou dans 0)
0 1 0 La ligne D.. les lettres de J à R (le "}" correspond à un trou dans 0)
0 0 1 La ligne E.. les lignes S à Z (le "\" correspond au trou en 0)

Là on a l'explication des 36 premières colonnes de la carte d'exemple. Pour la suite

Ensuite on passe aux cas où il y a deux trous dans les lignes 1 à 9. C'est le 8 qui est troué avec un chiffre de 2 à 7. On fait la somme des deux et on à les un chiffre entre 10 et 15 soir en hexa de A à F. Ce sont les dernières colonnes du tableau EBCEDIC.

Première

ligne

Seconde

ligne

Ligne Zéro Description A

10

B

11

C

12

D

13

E

14

F

15

0 0 0 La ligne 7 EBECEDIC : # @ ' = "
1 0 0 La ligne 4 EBECEDIC © . < ( + |
0 1 0 La ligne 5 EBECEDIC ! $ * ) ; ^
0 0 1 La ligne 6 EBECEDIC » , % _ > ?

On a tout ce qu'il nous faut pour écrire des programmes (en cobol certainement). Et ne cherchons pas le caractère "new-line" sur une carte perforée car une carte = une ligne donc apres chaque carte c'est "new-line"

Donc l'EBECEDIC sait coder des des caractères divers mais est construit pour que le sous ensemble des caractères utilisés pour coder puisse être facilement convertis en trous!

Hello worls ebcdic.png

Et l'éternel HELLO WORLD !.

Archivage

Les premiers "entrepôts de données" datent de cette époque.

IBM card storage.NARA.jpg

Un entrepôt de données en 1959. Une boîte contient 2000 fiches de 80 caractères soit 156 Ko. Chaque palette contient 225 boites soit 32 Mo. Il y a une centaine de palettes sur la photo donc on a 3 Go dans le hangar!

  • Mon premier disque dur dans le début des années 90 faisait 33 Mo il correspondait à une palette.
  • Une carte SD de 32 Go actuelle contiendrait l'équivalant de 10 Hangars

Carte SD.png= 10 fois ce que l'on voit sur cette photo!

  • Un disque de 3To 96 hangars!