🧠COBOL Mainframe: Diferença entre SECTION e PARAGRAPH – Conceitos, Uso e Boas Práticas
Salve jovem padawan no artigo de hoje, irei comentar sobre: Logica Procedural Estruturada, um tema espinhento, que confunde novatos e alguns veteranos também, pois seu uso não é normatizado, uns usam, outros não. As Boas Práticas recomendam, porém, nem todos cumprem.
Mesmo quando solicitamos explicações a Jedi, muitos se confundem e não conseguem explicar de forma clara, inclusive, sinto este problema com minhas turmas nos cursos que ministro, surgem inúmeras dúvidas no decorrer das classes.
Em linhas gerais, a Section surgiu como ferramenta auxiliar para minimizar os danos da Primeira Crise de Softwares, nos idos anos 70 do século passado. Epoca em que os pioneiros da codificação lidavam com código gerados nos anos 60, que no decorrer dos anos seguintes incentivaram o DOWNSIZE e o RIGHTSIZE, tema para outro artigo.
Naquela Ă©poca o desenvolvimento de programas COBOL, utilizava-se da LĂłgica Imperativa, gerando grandes monĂłlitos complexos, abusando de saltos GO TO e gerando cĂłdigos complexos, monstruosos e apelidados de Spaghetti Code, devido Ă complexidade na manutenção e de difĂcil entendimento, seja na leitura, seja no Teste de Mesa e gerando grandes dores de cabeça ao desenvolvedor. Muitas vezes atĂ© o prĂłprio criador se via as aranhas para corrigir BUGs e ABENDS.
Em COBOL, a clareza da estrutura do cĂłdigo Ă© uma das caracterĂsticas mais marcantes da linguagem. Mas para quem está começando, Ă© comum surgir a dĂşvida: qual Ă© a real diferença entre uma SECTION e um PARAGRAPH? Vamos descomplicar isso agora mesmo! Siga o fio.
🔍 O que são SECTIONS e PARAGRAPHS?
📌 SECTION
Uma SECTION é uma subdivisão lógica de uma DIVISION, neste artigo me deterei na PROCEDURE DIVISION, divisão onde toda a lógica esta desenvolvida. Ela organiza grupos de parágrafos relacionados em blocos coesos. Cada SECTION pode conter vários PARAGRAPHs.
- Possibilita agrupar funcionalidades ou tarefas relacionadas.
- Em instalações bancarias incluem Restart, Tratamento de Erros, LOGs, Calculo de Data, Acesso à Database, arquivos QSAM e VSAM, Arquitetura, Segurança auxiliada pelo RACF,
- Torna a leitura fácil e ajuda na inclusão de novas funcionalidades no ponto certo
- Usada principalmente em DIVISIONS como ENVIRONMON DIVISION, DATA DIVISION e PROCEDURE DIVISION.
📌 PARAGRAPH
Um PARAGRAPH Ă© uma unidade menor em uma SECTION. Ele representa um conjunto de instruções COBOL que executam uma tarefa especĂfica.
- Pode ser chamado com a instrução PERFORM.
- Utilizadas em chamadas Outline
- Auxiliando em laços de repetição UNTIL, VARYING e TIMES
- Criando blocos com vários parágrafos aninhados utilizando THRU
- Com Entrada, Processamento e SaĂda
- Modularizando processos
- Ideal para modularização, clareza e reutilização.
- Como boa prática recomendam-se nome claros, entendiveis e sequencias. Exemplo: R001-OPEN-FILE001, R002-OPEN-FILE002, R003-READ-FILE001
🔊 Aviso aos navegantes
Usar o GO TO nĂŁo Ă© proibido, mas bagunça o entendido e quando mĂŁos menos hábeis utilizam tornam o cĂłdigo de difĂcil entendimento.
Identar o cĂłdigo auxilia visualmente o entendimento do programa, lembre-se o COBOL foi desenvolvido para auxiliar a Leitura Natural.
Use Bugs Traps para capturar situações não previstas
A partir do COBOL II, surgiram os terminadores de escopo, sua função não é apenas mais batuque de teclado, permitem auxiliar na leitura de código para Humanos, use e abuse. O que é Terminador de Escopo? São os comandos END-IF, END-READ, END-PERFORM, END-EVALUATE, sempre um END-comando.
Importante nada de usar nomes hermĂ©ticos, que nada agregam, seja obvio e claro. Nada de termos cabalĂstico, que somente o criador entenda, Ă s vezes nem ele.
🛠Como funciona na prática?
Qual o segredo dos seus uso? Lembre-se um programa COBOL é escrito TOP-DOWN, onde o ponteiro vai executando sequencialmente cada instrução, efetuando saltos com retorno via PERFORM e saltos descontrolados/sem retorno via GO TO.
Mais fácil mostrar um pequeno programa exemplo com ponto de entrada, saltos, retornos e saĂda.
âś… Estrutura de exemplo com SECTION e PARAGRAPH
IDENTIFICATION DIVISION.
PROGRAM-ID. EXEMPLO-SECTION.
AUTHOR. VAGNER BELLACOSA.
DATE-WRITTEN. 01/07/25 @ 22:20:00.
DATE-COMPILED. 2025-07-01.
INSTALLATION. INEFE.
SECURITY. Programa exemplo de Section e Paragraph
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NOME PIC A(30).
01 WS-MENSAGEM PIC A(50).
PROCEDURE DIVISION.
INICIO-SECTION.
INICIO-PARAGRAPH.
DISPLAY "Digite seu nome:".
ACCEPT WS-NOME.
PERFORM MONTAR-MENSAGEM.
PERFORM MOSTRAR-MENSAGEM.
STOP RUN.
MONTAGEM-SECTION.
MONTAR-MENSAGEM.
MOVE "Olá, " TO WS-MENSAGEM.
STRING WS-MENSAGEM DELIMITED BY SPACE,
WS-NOME DELIMITED BY SPACE
INTO WS-MENSAGEM.
MOSTRAR-SECTION.
MOSTRAR-MENSAGEM.
DISPLAY WS-MENSAGEM.
📊 O que acontece aqui?
- INICIO-SECTION Ă© uma SECTION que contĂ©m o parágrafo INICIO-PARAGRAPH e Ă© o piloto do programa, onde todos os paragrafos sĂŁo chamados e contĂ©m a saĂda normal atravĂ©s do comando STOP RUN.
- MONTAGEM-SECTION e MOSTRAR-SECTION organizam logicamente o que seria um "módulo" da lógica: montagem e exibição da mensagem, sendo chamados e executados na ordem informada na INICIO-SECTION.
- Dentro das SECTIONS, os PARAGRAPHs realizam tarefas especĂficas (modularizadas com PERFORM).
💡 Boas práticas
âś… Quando usar SECTION?
- Em programas grandes ou complexos, onde faz sentido agrupar parágrafos por responsabilidade.
- Quando precisa de maior legibilidade e separação por contexto lógico.
- Adotar a arquitetura da instalação onde o programa esta sendo desenvolvido.
- Facilitar a inclusĂŁo de novas funcionalidades sem afetar o programa inteiro.
âś… Quando usar sĂł PARAGRAPHs?
- Em programas simples ou curtos, a SECTION pode ser omitida (embora não recomendável em ambientes de produção complexos).
- Em chamadas Outlines, ou seja, quando desviamos o ponteiro da execução para outras partes do codigo e necessitando retornar para a instrução a seguir da chamada PERFORM.
- Deixa o Monolito mais claro e com divisĂŁo de tarefas
- Exemplo válido:
PROCEDURE DIVISION.
INICIO.
DISPLAY "Olá, mundo".
STOP RUN.
đź§ Dicas para usar melhor
| Situação | Recomendação |
|-----------------------------------------------------|-----------------------------------------------------------|
| Modularização de lógica | Crie PARAGRAPHs com nomes claros |
| Agrupamento funcional (mĂłdulos) | Use SECTIONS com nomes descritivos |
| Melhor navegação no código | Padronize a estrutura: SECTION > PARAGRAPH |
| Para testes e manutenção futuros | PREFIRA sempre dividir logicamente com SECTIONs |
| Acesso sub-programas CALL | Inicialize as variaveis e valide o retorno |
| Database | Queries e validação do SQLCODE |
| Arquivos QSAM e VSAM | Validando o File-Status |
âś… ConclusĂŁo
Em COBOL, a organização Ă© essencial para legibilidade e manutenção. SECTIONs agrupam lĂłgica de alto nĂvel, enquanto PARAGRAPHs sĂŁo os blocos executáveis. Saber a diferença e usar bem ambos Ă© o primeiro passo para escrever cĂłdigos COBOL mais limpos, modulares e sustentáveis.
O códgo desenvolvido tem previsão de Longa vida, por isso, muitas pessoas irão codificar, seja em manutenção evolutiva ou corretiva, por isso clareza é essencial, pense na situação de ser acionado na madrugada para corrigir um programada abendado, que esta prendendo todo o processamento Batch. Mais estruturado, mais rapido é a correção.
Espero ter ajudado e deixe num comentário uma situação de abend em programa legado, como era o código, as dificuldades em entender e solucionar esse bug. Garanto com SECTION e PARAGRAPHs bem estruturados foi muito mais suave.