COBOL • MAINFRAME • TECNOLOGIA

COBOL continua movendo o mundo. Aqui você aprende como ele funciona.

Conteúdo técnico, exemplos práticos e experiências reais sobre COBOL, CICS, DB2, JCL, mainframe, modernização e Inteligência Artificial.

Terminal IBM 3270 com programa COBOL e mascote do COBOL Dicas

COBOL DICAS LAB

Gerador de
Relatórios COBOL

Desenhe cabeçalhos, detalhes e trailers em uma régua visual. Gere a área de WORKING-STORAGE ou reconstrua o layout a partir do código COBOL.

Seu código permanece no seu navegador

Nenhum layout ou código COBOL é enviado, armazenado ou registrado. Todo o processamento acontece localmente no seu dispositivo.

EDITOR VISUAL

Selecione uma linha

Arraste horizontalmente para conferir todas as posições. Clique em um campo para editá-lo.

CAMPOS

Elementos da linha

Início Fim Tipo Nome/conteúdo PIC Ações

PRÉVIA

Relatório montado

Adicionar linha

Adicionar campo

TSO e ISPF fazem parte da rotina de milhares de profissionais que desenvolvem e mantêm aplicações no z/OS. Embora sejam normalmente mencionados juntos, eles não são a mesma coisa.

  • TSO/E — Time Sharing Option/Extensions: ambiente que permite ao usuário interagir com o z/OS e executar comandos.
  • ISPF — Interactive System Productivity Facility: interface baseada em painéis que funciona sobre o TSO e facilita tarefas como navegar, editar membros, manipular datasets e executar utilitários.

Um comando TSO pode ser executado após a mensagem READY, na opção 6 do ISPF ou, em muitos painéis, com o prefixo TSO. Por exemplo:

TSO LISTALC STATUS


1. Comandos básicos do TSO/E

HELP — consultar ajuda

Exibe informações sobre um comando e seus operandos.

HELP ALLOCATE
HELP ALLOCATE SYNTAX

É o primeiro recurso a utilizar quando houver dúvida sobre a sintaxe aceita pelo ambiente.

LISTCAT — consultar entradas do catálogo

Lista informações catalogadas sobre datasets. O comando TSO/E LISTCAT utiliza o Access Method Services.

LISTCAT ENTRY('USER01.COBOL.FONTE') ALL
LISTCAT LEVEL('USER01')

Use ENTRY quando souber o nome exato e LEVEL para consultar um conjunto de entradas relacionado a um prefixo.

LISTDS — exibir informações de um dataset

Mostra atributos de um ou mais datasets.

LISTDS 'USER01.COBOL.FONTE'
LISTDS 'USER01.COBOL.FONTE' MEMBERS

O operando MEMBERS permite listar membros de uma biblioteca particionada quando aplicável.

LISTALC — consultar alocações da sessão

Exibe os datasets atualmente alocados à sessão TSO.

LISTALC
LISTALC STATUS

É especialmente útil para descobrir conflitos de alocação e conferir os DD names disponíveis.

ALLOCATE — alocar ou criar um dataset

Associa um dataset a um nome lógico e também pode criar datasets.

Alocação de um dataset existente:

ALLOCATE FILE(MYFILE) DATASET('USER01.DADOS.ENTRADA') SHR

Exemplo didático de criação de um dataset sequencial:

ALLOCATE DATASET('USER01.DADOS.NOVO') NEW CATALOG +
  SPACE(5,2) TRACKS RECFM(F B) LRECL(80) BLKSIZE(0)

Os atributos devem ser definidos conforme o padrão de SMS e as regras da instalação. Em ambientes gerenciados por SMS, parâmetros como classe de armazenamento podem ser determinados automaticamente.

FREE — liberar uma alocação

Libera um dataset ou DD name previamente alocado.

FREE FILE(MYFILE)
FREE DATASET('USER01.DADOS.ENTRADA')

RENAME — renomear dataset

Altera o nome de um dataset catalogado.

RENAME 'USER01.DADOS.TESTE' 'USER01.DADOS.BACKUP'

O dataset não pode estar em uso de maneira incompatível, e o usuário precisa ter as autorizações necessárias.

DELETE — excluir dataset

Exclui um dataset.

DELETE 'USER01.DADOS.BACKUP'

Confirme cuidadosamente o nome antes da execução. Em ambientes corporativos, exclusões podem ser restringidas por segurança, retenção ou políticas de catálogo.

EXEC — executar CLIST ou REXX

Executa um procedimento CLIST ou um programa REXX.

EXEC 'USER01.REXX(MEUPROC)'
EXEC 'USER01.REXX(MEUPROC)' EXEC

O segundo formato ajuda a indicar explicitamente a execução de um REXX quando necessário.

PROFILE — consultar ou alterar o perfil TSO

Exibe ou modifica características da sessão do usuário.

PROFILE
PROFILE PREFIX(USER01)
PROFILE NOPREFIX

O prefixo influencia a qualificação automática de nomes de datasets.

SEND — enviar mensagem

Envia uma mensagem para outro usuário ou para o operador, conforme as permissões e a configuração local.

SEND 'PROCESSAMENTO CONCLUIDO' USER(USER02)

TRANSMIT e RECEIVE — transmitir e receber dados

TRANSMIT, frequentemente abreviado como XMIT, envia datasets ou mensagens por uma rede compatível. RECEIVE processa o material recebido.

TRANSMIT SISTEMA.USER02 DATASET('USER01.COBOL.FONTE')
RECEIVE

Esse recurso depende da infraestrutura e das políticas da instalação.

2. Comandos TSO para jobs

SUBMIT — submeter JCL

Envia um dataset ou membro contendo JCL para processamento em batch.

SUBMIT 'USER01.JCL(MEUJOB)'

No editor ISPF, SUBMIT ou SUB normalmente submete o conteúdo que está sendo editado.

STATUS — consultar o estado do job

Consulta a situação de jobs submetidos pelo usuário.

STATUS
STATUS JOB12345

OUTPUT — acessar saída do job

Permite recuperar ou tratar saída de jobs conforme os operandos informados e a configuração do ambiente.

OUTPUT JOB12345

Na prática corporativa, o SDSF costuma oferecer uma interface mais conveniente para examinar spool e resultados.

CANCEL — cancelar job

Solicita o cancelamento de um job autorizado.

CANCEL JOB12345

O cancelamento pode interromper processamento e gerar inconsistências funcionais. Antes de utilizá-lo, confirme o job, a etapa em execução e o procedimento operacional da empresa.

3. Comandos gerais do ISPF

Comando Finalidade Exemplo ou observação
END Encerra a função atual e retorna ao painel anterior Frequentemente associado à PF3
RETURN Retorna diretamente a um menu principal definido pela aplicação Pode encerrar uma sequência de painéis
CANCEL Cancela a operação atual Em edição, pode descartar mudanças mediante confirmação
SWAP Alterna entre telas lógicas SWAP, SWAP LIST ou seleção indicada pelo painel
SPLIT Divide a tela e inicia outra tela lógica Frequentemente associado à PF2
START Inicia uma nova tela lógica Pode aceitar painel ou comando conforme o contexto
SETTINGS Abre as configurações do ISPF Disponibilidade depende da aplicação/painel
KEYS Exibe ou altera definições das teclas de função Útil para conferir PF1 a PF24
PFSHOW Mostra ou oculta as funções associadas às teclas PFSHOW ON, PFSHOW OFF
PANELID Mostra ou oculta o identificador do painel PANELID ON, PANELID OFF
RETRIEVE Recupera comandos digitados anteriormente Normalmente associado à PF12
TSO Executa um comando TSO sem sair do painel TSO LISTALC STATUS
UP Rola o conteúdo para cima Quantidade depende do campo Scroll
DOWN Rola o conteúdo para baixo Frequentemente PF8
LEFT Rola horizontalmente para a esquerda Frequentemente PF10
RIGHT Rola horizontalmente para a direita Frequentemente PF11

As associações de teclas podem ser alteradas pelo usuário ou pela instalação. Por isso, a ação mostrada na barra de PF keys é mais confiável do que decorar uma configuração presumida.

4. Comandos primários do editor ISPF

Comandos primários são digitados no campo Command ===> e normalmente afetam o conteúdo ou o estado completo da sessão de edição.

FIND — localizar texto

FIND 'CLIENTE'
F 'CLIENTE' ALL
F 'CLIENTE' 20 40 ALL

O último exemplo restringe a busca às colunas informadas. Outros qualificadores podem ser utilizados conforme o objetivo e a sintaxe da versão instalada.

CHANGE — substituir texto

CHANGE 'CLIENTE' 'USUARIO'
C 'CLIENTE' 'USUARIO' ALL
C 'CLIENTE' 'USUARIO' 20 40 ALL

Sem ALL, a alteração normalmente ocorre por ocorrência conforme a execução repetida do comando.

EXCLUDE — ocultar linhas da visualização

EXCLUDE 'COMENTARIO' ALL
X 'COMENTARIO' ALL

As linhas continuam no conteúdo; apenas ficam excluídas da visualização. Use RESET para reexibi-las.

RESET — restaurar a visualização

RESET
RESET EXCLUDED

Remove estados de visualização e marcadores conforme o operando utilizado.

LOCATE — posicionar em uma linha

LOCATE 500
L 500

SORT — ordenar linhas

SORT 1 10 A
SORT 20 30 D

Ordenações alteram a sequência das linhas. Use com atenção em programas, JCLs e arquivos cuja ordem tenha significado.

COPY e MOVE — inserir dados de outro membro ou dataset

COPY OUTROMEM
MOVE OUTROMEM

Após informar o comando, o editor pode solicitar uma linha de destino com A ou B. O comportamento exato depende da origem, do perfil e dos painéis apresentados.

CREATE e REPLACE — gravar linhas em outro destino

CREATE NOVOMEM
REPLACE NOVOMEM

CREATE cria o destino; REPLACE substitui um destino existente. Normalmente, utiliza-se CC para delimitar previamente um bloco específico.

SAVE, END e CANCEL

SAVE
END
CANCEL
  • SAVE grava as mudanças e mantém a sessão.
  • END normalmente grava e encerra a edição.
  • CANCEL encerra sem salvar as alterações, sujeito ao perfil e às confirmações configuradas.

SUBMIT — submeter o conteúdo editado

SUBMIT
SUB

É comum utilizá-lo ao editar um membro de JCL. Após a submissão, anote o job ID retornado.

HEX — visualizar representação hexadecimal

HEX ON
HEX OFF

Ajuda a identificar caracteres não imprimíveis, problemas de codificação e conteúdo inválido.

CAPS — controlar conversão para maiúsculas

CAPS ON
CAPS OFF

O efeito pode depender do perfil do editor e do tipo de dado.

NUMBER — controlar numeração

NUMBER ON
NUMBER OFF

Em fontes COBOL de formato fixo, é essencial considerar as áreas de sequência, indicador, código e identificação.

COLS, BOUNDS e TABS

COLS
BOUNDS
TABS

Esses recursos auxiliam o trabalho com posições de coluna, limites de edição e tabulação. Também existem comandos de linha relacionados, como COLS e BNDS.

5. Comandos de linha do editor

Comandos de linha são digitados sobre a área de numeração de uma linha. Podem afetar uma única linha, uma quantidade informada ou um bloco delimitado.

Comando Finalidade Exemplo
I Inserir uma linha I
In Inserir várias linhas I5
D Excluir uma linha D
Dn Excluir várias linhas D5
DD...DD Delimitar bloco para exclusão Marcar início e fim
R Repetir uma linha R
Rn Repetir uma linha várias vezes R5
RR...RR Delimitar bloco para repetição Marcar início e fim
C Copiar uma linha Combinar com A (After), B(Before) ou O(Overlay)
CC...CC Delimitar bloco para cópia Marcar início e fim
M Mover uma linha Combinar com A (After), B(Before) ou O(Overlay)
MM...MM Delimitar bloco para movimentação Marcar início e fim
A Destino depois da linha After
B Destino antes da linha Before
O Sobrepor linha de destino Overlay
OO...OO Delimitar bloco de sobreposição Usado com cópia ou movimentação
X Excluir linha da visualização Não apaga o conteúdo
XX...XX Excluir bloco da visualização Delimita início e fim
S Mostrar/selecionar linha ou membro Significado depende do painel
UC Converter texto para maiúsculas Pode aceitar bloco ou quantidade
LC Converter texto para minúsculas Pode aceitar bloco ou quantidade
TE Text Entry Auxilia a entrada de texto corrido
TS Text Split Divide texto conforme os limites
TF Text Flow Reorganiza o fluxo do texto
COLS Exibir régua de colunas Linha informativa temporária
BNDS Exibir ou definir limites Linha de limites do editor
MASK Exibir ou definir máscara de inserção Útil para estruturas repetitivas

 

6. Exemplos práticos

Localizar todas as chamadas de um programa

FIND 'CALL' ALL

Para restringir a busca à área de código de um fonte COBOL de formato fixo:

FIND 'CALL' 8 72 ALL

Alterar um nome apenas na área de código

CHANGE 'WS-CLIENTE' 'WS-CORRENTISTA' 8 72 ALL

Revise as ocorrências antes de salvar, principalmente quando o texto puder aparecer em comentários ou literais.

Copiar um bloco de linhas

  1. Digite CC na primeira linha do bloco.
  2. Digite CC na última linha.
  3. Digite A para inserir depois de uma linha, ou B para inserir antes.
  4. Pressione Enter.

Mover um bloco

  1. Marque o início e o fim com MM.
  2. Informe A ou B na linha de destino.
  3. Pressione Enter.

Submeter um JCL e consultar o resultado

  1. Abra o membro em Edit ou View, conforme permitido.
  2. Digite SUBMIT na linha de comando.
  3. Anote o job ID retornado.
  4. Consulte o job no SDSF ou utilize STATUS quando aplicável.
  5. Verifique o return code de cada step e as mensagens do JES.

7. Boas práticas

  • Consulte HELP nome-do-comando antes de utilizar operandos desconhecidos.
  • Confirme o dataset completo antes de executar DELETE, RENAME ou FREE.
  • Em alterações globais, use FIND ... ALL antes de CHANGE ... ALL.
  • Restrinja FIND e CHANGE às colunas relevantes em fontes de formato fixo.
  • Confira as PF keys exibidas pelo ambiente; elas podem ter sido redefinidas.
  • Antes de cancelar um job, identifique seu estado, etapa e impacto funcional.
  • Trate comandos e menus customizados como particularidades da instalação.
  • Em produção, siga os procedimentos de segurança e gestão de mudanças da empresa.

8. O que vem a seguir

Este artigo apresenta a base do TSO e do ISPF. O Guia de Comandos Mainframe do COBOL Dicas será complementado por páginas específicas sobre:

  • editor ISPF em profundidade;
  • datasets, PDS, PDSE e membros;
  • utilitários ISPF 3.x;
  • SDSF e análise de jobs;
  • ChangeMan ZMF e ciclo de implantação.

Conclusão

TSO e ISPF podem parecer ambientes antigos para quem está chegando, mas continuam oferecendo uma forma rápida, estável e produtiva de trabalhar no z/OS. O verdadeiro ganho acontece quando o profissional deixa de decorar caminhos e passa a compreender o objetivo de cada comando.

Conhecer COBOL é fundamental. Saber utilizar bem o ambiente em que o COBOL vive é o que transforma conhecimento da linguagem em produtividade no mainframe.

Referências oficiais

COBOL DICAS — EXEMPLO ONLINE
       IDENTIFICATION DIVISION.
       PROGRAM-ID. LEITURA-ARQUIVO.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT ARQ-CLIENTES
               ASSIGN TO "CLIENTES.DAT"
               ORGANIZATION IS LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.

       FD  ARQ-CLIENTES.
       01  REG-CLIENTE.
           05 CLIENTE-ID     PIC 9(05).
           05 CLIENTE-NOME   PIC X(40).

       WORKING-STORAGE SECTION.
       01  WS-FIM-ARQUIVO    PIC X VALUE "N".

       PROCEDURE DIVISION.
           OPEN INPUT ARQ-CLIENTES

           PERFORM UNTIL WS-FIM-ARQUIVO = "S"
               READ ARQ-CLIENTES
                   AT END
                       MOVE "S" TO WS-FIM-ARQUIVO
                   NOT AT END
                       DISPLAY REG-CLIENTE
               END-READ
           END-PERFORM

           CLOSE ARQ-CLIENTES
           STOP RUN.
COBOL DICAS LAB

Ferramentas gratuitas para COBOL e Mainframe

Analise, compare, formate e compreenda códigos COBOL, copybooks e jobs JCL diretamente no navegador.

Analisador de Código COBOL
Análise COBOL

Analisador de Código COBOL

Identifique estrutura, dependências, fluxo, métricas e pontos que merecem revisão.

Experimentar no LAB
Copybook Analyzer
Copybook

Copybook Analyzer

Calcule posições e tamanhos, interprete registros e converta estruturas para JSON.

Experimentar no LAB
Compare COBOL
Comparação

Compare COBOL

Compare duas versões de um programa e encontre inclusões, remoções e alterações.

Experimentar no LAB
JCL Analyzer
Processamento batch

JCL Analyzer

Mapeie JOB, EXEC, DD, programas, procedures, datasets e dependências entre steps.

Experimentar no LAB
Gerador de Dados COBOL
Dados de teste

Gerador de Dados COBOL

Gere registros posicionais a partir de copybooks e exporte massas de testes.

Experimentar no LAB
COBOL Formatter
Formatação

COBOL Formatter

Organize a indentação e converta código COBOL entre os formatos fixo e livre.

Experimentar no LAB
Calculadora PIC COBOL
Cláusula PIC

Calculadora PIC COBOL

Confira bytes, dígitos e faixas de valores para DISPLAY, COMP, COMP-3 e BINARY.

Experimentar no LAB
VÍDEOS E PODCAST

Assista, ouça e aprenda onde estiver

Acompanhe conteúdos práticos sobre COBOL, mainframe, carreira e modernização de sistemas.

LIVE DE SEGUNDA

Sistema em COBOL do Zero

Desenvolvimento de um sistema completo em COBOL, passo a passo, utilizando VS Code e GnuCOBOL.

Assistir no YouTube
LIVE DE QUINTA

Processamento Batch no Mainframe

COBOL, JCL, arquivos sequenciais, SORT e processamento batch utilizando o ambiente Hercules TK5.

Assistir no YouTube
COBOL Dicas Podcast
Tecnologia, carreira e mainframe
OUÇA ONDE PREFERIR Disponível nas principais plataformas de podcast

Acompanhe o COBOL Dicas Podcast no Spotify, YouTube e nas principais plataformas de áudio.

PODCAST

Episódio 15 – Por que ainda faltam programadores COBOL no mundo todo?

Neste episódio do COBOL Dicas Podcast, analisamos o cenário real de 2025–2026 e respondemos à pergunta que muita gente evita enfrentar: por que ainda faltam programadores COBOL no mundo todo?

COMUNIDADE COBOL DICAS

Você não precisa aprender sozinho.

Participe da comunidade, compartilhe experiências, tire dúvidas e conheça profissionais interessados em COBOL, mainframe e modernização.

COBOL CICS DB2 JCL GnuCOBOL Carreira
Participar do Fórum COBOL Dicas
FÓRUM

Dúvidas e discussões técnicas

Converse com outros profissionais e estudantes, compartilhe códigos e encontre soluções para desafios do dia a dia.

  • Programação COBOL e arquivos.
  • CICS, DB2, JCL e mainframe.
  • GnuCOBOL, VS Code e integração.
Explorar discussões
BANCO DE TALENTOS

Conecte-se ao mercado

Cadastre seu perfil, apresente sua experiência e amplie suas conexões com oportunidades relacionadas ao universo COBOL.

  • Profissionais experientes.
  • Estudantes e iniciantes.
  • Networking e oportunidades.
Conhecer o Banco de Talentos