Por que as letras em EBCDIC não aparecem em sequência?

O padrão ASCII foi adotado em 1963 e hoje em dia é difícil que alguém utilize uma codificação cujos primeiros 128 caracteres fossem diferentes do ASCII. No entanto, até o final do século passado, o EBCDIC era amplamente utilizado — uma codificação padrão para mainframes da IBM e seus clones soviéticos na série ЕС ЭВМ. O EBCDIC continua a ser a codificação principal no z/OS — o sistema operacional padrão para os modernos mainframes IBM Z.

O que salta aos olhos ao olhar para o EBCDIC é que as letras não estão dispostas de forma sequencial: entre I e J e entre R e S existem posições não utilizadas (nos ЕС ЭВМ, entre esses intervalos foram alocados símbolos cirílicos). Quem poderia pensar em codificar letras com intervalos desiguais entre letras vizinhas?

Por que as letras em EBCDIC não aparecem em sequência?

O próprio nome EBCDIC (“Extended BCDIC”) sugere que essa codificação — ao contrário do ASCII — não foi criada do zero, mas sim com base na codificação de seis bits BCDIC, que foi utilizada a partir de IBM 704 (1954):

Por que as letras em EBCDIC não aparecem em sequência?

Não há compatibilidade retroativa direta: uma característica conveniente do BCDIC, que foi perdida na transição para o EBCDIC, era que os números 0—9 correspondem aos códigos de 0 a 9. No entanto, já havia lacunas de sete códigos entre I e J e oito códigos entre R e S no BCDIC. De onde eles surgiram?

A história do (E)BCDIC começa simultaneamente com a história da IBM — muito antes dos computadores eletrônicos. A IBM foi formada pela fusão de quatro empresas, das quais a mais tecnologicamente avançada era a "Tabulating Machine Company", fundada em 1896 por Hermann Hollerith — o inventor do tabulador. Os primeiros tabuladores apenas contavam o número de cartões perfurados em um determinado local; mas em 1905, Hollerith começou a produzir tabuladores decimais. Cada cartão para o tabulador decimal consistia em campos de comprimento variável, e os números registrados nesses campos na forma decimal comum eram somados em toda a pilha. A divisão do cartão em campos era determinada pela conexão de fios no painel de comutação do tabulador. Por exemplo, neste cartão perfurado de Hollerith, armazenado na Biblioteca do Congresso, o número 23456789012345678 está claramente impresso, desconhecendo como foi dividido em campos:

Por que as letras em EBCDIC não aparecem em sequência?

Os mais atentos poderiam notar que no cartão de Hollerith há 12 linhas para os buracos, embora para os dígitos sejam suficientes dez; e no BCDIC para cada valor dos dois bits mais significativos, são usados apenas 12 códigos dos 16 possíveis.

Certamente, isso não é uma coincidência. Originalmente, Hollerith destinou linhas adicionais para "marcas especiais" que não eram somadas, mas apenas contadas — como nos primeiros tabuladores. (Hoje, chamaríamos isso de "campos bitwise"). Além disso, entre as "marcas especiais", era possível definir indicadores de grupo: se, ao tabular, eram necessárias não apenas somas finais, mas também intermediárias, o tabulador parava ao detectar a alteração de qualquer um dos indicadores de grupo, e o operador deveria reescrever as somas intermediárias do display digital em papel, zerar o display e retomar a tabulação. Por exemplo, ao contabilizar balanços, um grupo de cartões poderia corresponder a uma data ou a um contraparte específica.

Até 1920, quando Hollerith já havia se aposentado, começaram a ser usados os "tabuladores impressos", que se conectavam ao telégrafo e podiam imprimir somas intermediárias por conta própria, sem intervenção do operador. A complexidade agora estava em determinar a que se referia cada um dos números impressos. Em 1931, a IBM decidiu utilizar "marcas especiais" para indicar letras: a marca na linha 12 indicava a letra de A até I, a da linha 11 indicava a letra de J até R, e a da linha 0 indicava a letra de S até Z. O novo "tabulador alfabético" podia imprimir o nome de cada grupo de cartões junto com as somas intermediárias; ao mesmo tempo, uma coluna não perfurada se tornava um espaço entre os símbolos. Note que S é indicado pela combinação de furos 0+2, enquanto a combinação 0+1 não era utilizada inicialmente por receio de que dois furos próximos em uma coluna pudessem causar problemas mecânicos no leitor.

Por que as letras em EBCDIC não aparecem em sequência?

Agora, a tabela BCDIC pode ser vista sob uma nova perspectiva:

Por que as letras em EBCDIC não aparecem em sequência?

Exceto que 0 e espaço estão trocados de lugar, os dois bits mais significativos determinam a "marca especial" que desde 1931 era perfurada no cartão perfurado para o símbolo correspondente; e os quatro bits menos significativos definem o dígito que é perfurado na parte principal do cartão. O suporte a símbolos & - / foi incorporada nos tabuladores da IBM na década de 1930, e a codificação desses símbolos em BCDIC corresponde às combinações de furos que lhes são atribuídas. Quando foi necessária a suporte para um número ainda maior de caracteres, uma "marca especial" adicional começou a ser perfurada na linha 8 — assim, em uma coluna, podia haver até três furos. Esse formato de cartões perfurados permaneceu praticamente inalterado até o final do século. Na URSS, foram mantidas as codificações latinas e de pontuação da IBM, enquanto para as letras cirílicas eram perfuradas várias "marcas especiais" nas linhas 12, 11, 0 — não se limitando a três furos em uma única coluna.

Quando o computador IBM 704 foi criado, a codificação de caracteres para ele não foi um assunto que gerou muitas preocupações: foi utilizada a codificação já empregada então em cartões perfurados, e apenas o 0 foi "reposicionado". Em 1964, ao transitar de BCDIC para EBCDIC, os quatro bits menos significativos de cada caractere foram mantidos inalterados, embora alguns bits mais significativos tenham sido reorganizados. Assim, o formato de cartão perfurado escolhido por Hollerith no início do século passado influenciou a arquitetura de todos os computadores IBM, até o IBM Z.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster