O que eram as entradas: um guia sobre o sistema de entrada de dados legado
As entradas eram o método padrão de interface entre o operador e o sistema computacional antes da popularização das interfaces gráficas. Basicamente, era tudo aquilo que o usuário digitaria, selecionaria ou carregaria para que o programa processasse. Em sistemas legados — principalmente minicomputadores dos anos 70 e 80, terminais teletype e mainframes IBM — as entradas funcionavam de forma totalmente diferente do que você vê hoje.
Como funcionavam na prática
O sistema recebia dados através de cartões perfurados, fitas magnéticas, terminais de linha única (como o VT100) ou arquivos de texto plano com campos fixos. Cada entrada tinha uma posição definida: coluna 1 a 8 para um código de cliente, coluna 9 a 20 para o nome, e assim por diante. Não havia validação visual. Se você errasse uma vírgula na coluna 14, o sistema processava o erro silenciosamente e talvez gerasse um relatório de exceções horas depois. Eu trabalhei com migração de sistemas antigos há alguns anos e me deparei com um problema específico: arquivos de entrada com delimitadores de campo que variavam entre tabulação e espaços múltiplos, dependendo do terminal que os gerou. A solução que funcionou foi usar parsing por posições fixas em vez de split por delimitador, porque a posição sempre era confiável mesmo quando o caractere separador era inconsistente.
Tipos comuns de entradas em sistemas legados
Entradas por cartão perfurado
Cada cartão tinha 80 colunas. Um formulário completo podia exigir de 3 a 12 cartões encadeados. O operador carregava um maço de 500 cartões na alimentadora e o sistema lia sequencialmente. Erros de perfuração causavam travamentos que só apareciam após minutos de processamento. Validar a integridade do maço antes de submeter era prática obrigatória.
Entradas por terminal de linha
O operador via um cursor piscando em uma tela monocromática e digitava comandos ou dados em campos posicionais. Muitos sistemas usavam telas formatadas com linhas horizontais desenhadas com caracteres ASCII. O retorno do carro submetia o formulário inteiro. Não havia botão "enviar". O protocolo de comunicação via serial (RS-232) impunha latências de 1200 a 9600 bps, o que significava que cada interação podía levar de 2 a 5 segundos.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Entradas em arquivo lote
Muitas operações eram disparadas pela subida de um arquivo.txt ou.dat para um diretório de monitoramento. O sistema lia o arquivo inteiro, processava cada registro e gerava um arquivo de saída com o sufixo .out ou .rpt. Esse padrão ainda é usado em muitos ambientes bancários e governamentais até hoje.
Problemas comuns e como contorná-los
O maior problema que encontrei pessoalmente foi a inconsistência de encoding entre sistemas. Arquivos de entrada vindos de terminais IBM tinha codepage 37 (EBCDIC), enquanto os sistemas de destino usavam ASCII. Caracteres como @, [, \, ], ^, _, `, {, |, }, ~ não tinham mapeamento direto e precisavam de conversão explícita. Usei uma tabela de tradução manual e um script de pré-processamento que rodava antes da carga principal. Outro ponto crítico: campos numéricos com sinal embutido. Em muitos sistemas, o valor negativo não usava o sinal menos, mas sim um parênteses na última coluna ou uma letra final (por exemplo, "12345(" para -12345). Ler isso como número puro quebra o processamento. Sempre valide a presença de marcadores de sinal antes de converter.
Pegadinhas que iniciantes nunca mencionam
A primeira é que entradas vazias não são iguais a espaços. Em campos de largura fixa, um campo vazio era preenchido com espaços em branco. Se você tratasse espaço como nulo, campos parcialmente preenchidos seriam interpretados erroneamente. A segunda é que o fim do arquivo nem sempre era sinalizado pelo.EOF padrão do sistema operacional. Muitos sistemas legados usavam registros de controle com contagem de linhas (trailer record) para determinar o final do processamento. Ignorar isso causava perda de dados no último lote.
Limitações das entradas legadas
O sistema de entradas fixas não escala. Qualquer alteração no layout do formulário exigia recompilação do parser e redistribuição dos programas de leitura. A velocidade de entrada era limitada pela velocidade do terminal ou da alimentadora de cartões — nada acima de 60 cartões por minuto na prática. Além disso, não havia segurança integrada: qualquer pessoa com acesso ao terminal podia submeter entradas sem autenticação robusta, o que gerava problemas sérios de integridade em ambientes multiusuário.
Alternativas modernas
Se você está migrando de um sistema que ainda depende de entradas legadas, o caminho mais seguro é criar uma camada de adaptação: um serviço que lê o formato antigo (cartão, EBCDIC, campos fixos) e o converte para JSON ou XML antes de enviar ao sistema moderno. Ferramentas como Python com pandas para leitura de campos fixos, ou bibliotecas como cobol2json para parsing de estruturas COBOL, aceleram esse processo. Uma migração bem feita leva de 2 a 3 dias para arquivos de até 50 mil registros, dependendo da complexidade dos layouts. Se o volume for maior que isso, considere processamento paralelo por chunk, dividindo o arquivo de entrada em lotes de 5 mil registros cada. Isso reduz o tempo de processamento de forma previsível sem comprometer a ordem dos dados.