Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Sobre saída dos dados

Na aula foi falado sobre a saída para a tela e para arquivo, por acaso não teria como gerar uma saída direto para impressoras? Estou perguntando porque como foi filho de bancário convivi boa parte da vida com formulários contínuos do banco e é onde eles imprimiam os relatórios e/ou instruções que chegavam por telex. Ai, fiquei imaginando se não fazia mais sentido ao invés de gerar um arquivo para ser aberto em outra aplicação para ser enviado a impressora, ser feito direto do sistema que você está desenvolvendo.

2 respostas
solução!

Oii, Rogerio.

Que legal que você teve esse contato com o mundo bancário e os formulários contínuos! Essa vivência ajuda muito a entender por que o COBOL foi estruturado dessa forma. A resposta curta é: sim, é possível, mas a forma como isso acontece mudou um pouco com a evolução dos sistemas operacionais.

No COBOL, raramente escrevemos o caminho físico de uma impressora (como uma porta USB ou um endereço IP) dentro do código-fonte. O programa é escrito para gravar em um "nome lógico" (como o seu RELSAIDA).

A mágica de direcionar isso para uma impressora física acontece fora do programa:

  • No mainframe (ambiente de banco): Utiliza-se o JCL (Job Control Language). No JCL, você associa o nome RELSAIDA a uma classe de impressão (geralmente chamada de SYSOUT). O sistema operacional recebe os dados e os envia para a fila de impressão (SPOOL), que gerencia a saída para as impressoras de formulário contínuo.
  • No Windows/Linux: Você pode configurar o ambiente para que o arquivo de saída seja direcionado para uma porta de impressora (como LPT1 ou PRN).

O uso do "ADVANCING" e caracteres de controle:

Lembra que no seu código você usou o AFTER PAGE? Isso é exatamente o que as impressoras de impacto usam para saber quando saltar para a próxima folha do formulário contínuo.

Quando o COBOL gera o arquivo com essas instruções, ele insere caracteres de controle (como o código ASA ou Machine Codes) na primeira coluna de cada linha.

Comando COBOLO que a impressora faz
AFTER 1Gira o rolo da impressora uma linha (espaço simples).
AFTER 2Gira o rolo duas linhas (espaço duplo).
AFTER PAGEExecuta o "Form Feed", fazendo o papel correr até o início da próxima folha.

Por que gerar um arquivo antes?

Mesmo quando o objetivo final é a impressão física, o sistema quase sempre gera um arquivo temporário no SPOOL. Isso acontece por alguns motivos:

Velocidade: O programa processa milhares de registros em segundos, mas a impressora é lenta. O arquivo serve como um "balde" que armazena os dados enquanto a impressora trabalha no ritmo dela.
Segurança: Se o papel travar ou a fita acabar, o relatório já está salvo no arquivo e pode ser reenviado para a impressora sem precisar processar todos os cálculos do programa novamente.

Então, o que você tá fazendo no curso é exatamente o passo que precede a saída naquelas impressoras barulhentas de formulário contínuo que você via no banco. O arquivo RELSAIDA é, na prática, a "imagem" do que será impresso.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado pela resposta, Lorena!