A REPORT SECTION, pertencente à DATA DIVISION, é usada para definir relatórios estruturados a serem gerados pelo programa. Embora pouco usada nos ambientes modernos, foi durante muito tempo a forma padrão de criar relatórios impressos em COBOL, principalmente em sistemas batch de mainframe.

📋 Função da REPORT SECTION

  • Permite gerar relatórios impressos com formatação pré-definida

  • Organiza o conteúdo em grupos lógicos de impressão

  • Se integra com a FILE SECTION via cláusula REPORT IS nome-do-relatorio

  • Útil em programas legados que ainda geram saída tabular formatada

🧱 Estrutura geral

A estrutura da REPORT SECTION envolve três partes principais:

  1. Cabeçalho da seção:

    REPORT SECTION.
  2. Entrada RD (Report Description):
    Define o nome do relatório e suas características.
    RD RELATORIO-VENDAS PAGE LIMIT IS 66 LINES.
  3. Grupos de relatório (nível 01):
    Definem as linhas e campos que compõem o relatório.
    01 CABECALHO TYPE IS PAGE HEADING.
       03 TITULO     PIC X(40) VALUE "RELATÓRIO DE VENDAS".

📌 Exemplo completo

REPORT SECTION.

RD RELATORIO-VENDAS
   PAGE LIMIT IS 66 LINES
   HEADING 3 FIRST DETAIL 5 LAST DETAIL 60 FOOTING 63.

01 CABECALHO     TYPE IS PAGE HEADING.
   03 TITULO     PIC X(40) VALUE "RELATÓRIO DE VENDAS".

01 DETALHE       TYPE IS DETAIL.
   03 PRODUTO    PIC X(20).
   03 VALOR      PIC 9(05)V99.

01 RODAPE        TYPE IS PAGE FOOTING.
   03 ASSINATURA PIC X(40) VALUE "Responsável pela apuração".

🔄 Integração com a FILE SECTION

A REPORT SECTION não está ligada diretamente a um arquivo, mas é associada por meio de uma entrada na FILE SECTION que usa a cláusula REPORT IS.

FD SAIDA-RELATORIO
   REPORT IS RELATORIO-VENDAS.

Assim, ao abrir o arquivo com OPEN OUTPUT SAIDA-RELATORIO, o relatório será ativado.

🧭 Cláusulas comuns na RD

Cláusula Função
PAGE LIMIT Quantidade de linhas por página
HEADING Linha onde o cabeçalho será impresso
FIRST DETAIL Primeira linha onde os dados podem ser impressos
LAST DETAIL Última linha válida para dados
FOOTING Linha onde o rodapé será impresso
CODE Identifica relatórios diferentes no mesmo arquivo de saída

🧾 Tipos de grupos (nível 01)

Tipo de grupo Descrição
PAGE HEADING Cabeçalho de página
DETAIL Linha de dados (detalhes)
CONTROL HEADING Impressão quando há mudança de controle (ex: mudança de cliente)
CONTROL FOOTING Rodapé após mudança de controle
PAGE FOOTING Rodapé da página
FINAL FOOTING Rodapé final do relatório

⚠️ Observações técnicas

  • Um grupo de relatório nunca é dividido entre páginas

  • A cláusula CODE é usada para diferenciar relatórios quando há mais de um associado ao mesmo arquivo

  • Muito usada em sistemas legados, especialmente quando impressoras matriciais ou arquivos texto estruturados eram padrão

 

✅ Conclusão

A REPORT SECTION é um recurso clássico do COBOL voltado para a geração estruturada de relatórios impressos. Embora raramente usada em sistemas modernos, ainda aparece em programas legados, sendo útil compreender sua estrutura e funcionamento para manutenção ou migração de sistemas.