1. Acessando a linha de comando — ISPF Opção 6

Para acessar a linha de comando TSO dentro do ISPF, vá para a opção 6 no Primary Menu ou use o fast path =6 de qualquer tela. Você verá a tela TSO Command Processor:

TSO COMMAND PROCESSOR Enter TSO command or REXX exec below: ==> LISTCAT ENTRIES('SYS1.PROCLIB') ALL (saída do comando aparece aqui)

Digite o comando no campo ==> e pressione Enter. O resultado aparece na mesma tela. Para executar outro comando, pressione PF3 para voltar ao campo de entrada.

🦕 Analogia — Opção 6 como o terminal

Pense na opção 6 como o terminal do Linux ou o PowerShell do Windows dentro do ISPF. Em vez de clicar em menus para ver propriedades de um arquivo ou submeter um job, você simplesmente digita o comando. É mais rápido para quem já conhece os comandos, e essencial para automatização.

2. Comandos de dataset

Estes são os comandos TSO mais usados no dia a dia para gerenciar datasets:

LISTCAT — ver informações do catálogo

O LISTCAT mostra informações sobre datasets registrados no catálogo do sistema — tipo, organização, tamanho, datas de criação e acesso.

/* Listar um dataset específico */ LISTCAT ENTRIES('USUARIO.MEUS.DADOS') ALL /* Listar todos os datasets com um prefixo */ LISTCAT LEVEL('USUARIO') ALL /* Ver só nome e tipo (menos verboso) */ LISTCAT ENTRIES('USUARIO.MEUS.DADOS') NAME

💡 Shorthand do LISTCAT

Você pode abreviar: LISTC em vez de LISTCAT, e omitir as aspas se o prefixo for seu próprio TSO user ID. Com o TSO prefix configurado, LISTC L(MEUS.DADOS) ALL já funciona.

LISTDS — detalhes de um PDS ou PS

O LISTDS mostra as características físicas do dataset — RECFM, LRECL, BLKSIZE — e, para PDS, lista os membros.

/* Detalhes do dataset */ LISTDS 'USUARIO.MINHA.PROC' /* Listar membros de um PDS */ LISTDS 'USUARIO.MINHA.PROC' MEMBERS /* Saída típica */ USUARIO.MINHA.PROC --RECFM-LRECL-BLKSIZE-DSORG FB 80 27920 PO --MEMBERS-- CALCPROC RELPROC

ALLOCATE — criar um dataset

O ALLOCATE cria um novo dataset diretamente pela linha de comando, equivalente ao que você faria pelo ISPF 3.2.

ALLOCATE FILE(MEUARQ) /* DD name temporário */ DATASET('USUARIO.NOVO.PDS') /* nome do dataset */ NEW CATALOG /* novo e catalogado */ SPACE(5,2) TRACKS /* 5 trilhas + 2 ext */ DSORG(PO) /* PDS */ RECFM(F,B) LRECL(80) /* fixo bloqueado 80 */ BLKSIZE(27920) DIR(10) /* 10 blocos de dir */

FREE — liberar alocação

O FREE libera a alocação de um DD name da sua sessão TSO. Não apaga o dataset.

FREE FILE(MEUARQ) /* ou por nome de dataset: */ FREE DATASET('USUARIO.NOVO.PDS')

RENAME — renomear dataset

RENAME 'USUARIO.NOME.ANTIGO' 'USUARIO.NOME.NOVO'

DELETE — apagar dataset

DELETE 'USUARIO.DATASET.VELHO' /* Apagar membro de PDS: */ DELETE 'USUARIO.MINHA.PROC(VELHOPROC)'

⚠️ DELETE é imediato e irreversível

Diferente do ISPF 3.4 que pede confirmação, o DELETE na linha de comando executa na hora sem perguntar. Confirme o nome do dataset antes de pressionar Enter.

3. Comandos de job

SUBMIT — submeter um job

O SUBMIT envia um membro JCL para a fila de execução do JES. É equivalente a usar o comando SUB no editor do ISPF.

/* Submeter um membro de PDS */ SUBMIT 'USUARIO.MEU.JCL(CALCJOB)' /* Resposta típica: */ JOB CALCJOB(JOB01234) SUBMITTED

STATUS — verificar status de um job

O STATUS mostra o estado atual dos seus jobs — em fila, executando ou concluídos. Por padrão lista jobs do seu próprio user ID.

/* Ver todos os seus jobs */ STATUS /* Ver um job específico pelo nome */ STATUS CALCJOB /* Saída típica: */ JOB CALCJOB (JOB01234) ON OUTPUT QUEUE ------ JES2 JOB STATISTICS ------ 00 CARDS READ 41 SYSOUT PRINT RECORDS

CANCEL — cancelar um job em execução

/* Cancelar por nome */ CANCEL CALCJOB /* Cancelar por job ID */ CANCEL JOB01234 /* Cancelar com dump de memória */ CANCEL CALCJOB DUMP

💡 CANCEL vs PURGE

CANCEL interrompe um job que ainda está executando. PURGE (feito pelo SDSF) apaga o output de um job que já terminou. São operações diferentes — um para parar, outro para limpar.

4. Executando programas e CLISTs/REXX

EXEC — executar uma CLIST ou REXX

CLISTs (Command Lists) e programas REXX são scripts que automatizam sequências de comandos TSO. O EXEC executa um membro de uma PDS de procedimentos.

/* Executar um REXX do seu PDS */ EXEC 'USUARIO.MEUS.REXX(BACKUP)' /* Executar passando parâmetros */ EXEC 'USUARIO.MEUS.REXX(BACKUP)' 'PARM1 PARM2' /* Se o dataset estiver no SYSPROC/SYSEXEC, só o nome basta: */ EXEC BACKUP

CALL — executar um programa de load library

O CALL executa um programa compilado (módulo de carga) diretamente da linha de comando.

/* Executar programa da sua load library */ CALL 'USUARIO.MINHA.LOADLIB(CALCPROG)' /* Com parâmetros */ CALL 'USUARIO.MINHA.LOADLIB(CALCPROG)' 'ENTRADA SAIDA'

🦕 Analogia — EXEC vs CALL

Pense em EXEC como rodar um script shell (arquivo de texto interpretado linha a linha) e CALL como executar um binário compilado. CLISTs/REXX são scripts; módulos de carga são programas compilados (COBOL, PL/I, etc.).

5. Usando TSO direto da command line do ISPF

Você não precisa ir à opção 6 para executar um comando TSO. Em qualquer tela do ISPF, basta digitar TSO seguido do comando na command line ==>:

/* Na command line de qualquer tela ISPF: */ ==> TSO LISTDS 'USUARIO.MEUS.DADOS' MEMBERS ==> TSO STATUS ==> TSO SUBMIT 'USUARIO.MEU.JCL(NOVOJOB)'

Isso é muito útil quando você está no editor e quer verificar o status de um job sem sair da tela. Após o resultado, o ISPF volta automaticamente para onde você estava.

💡 TSO prefix automático

O TSO tem um prefix configurado com o seu user ID. Quando você digita um nome de dataset sem aspas, o TSO automaticamente adiciona o prefix na frente. LISTDS MEUS.DADOS equivale a LISTDS 'USUARIO.MEUS.DADOS'. Use aspas simples sempre que quiser um nome de dataset exato, sem o prefix automático.

Tabela rápida — comandos mais usados

Comando O que faz Exemplo rápido
LISTCAT Info do catálogo LISTC L(USUARIO) ALL
LISTDS Info e membros do dataset LISTDS 'DS' MEMBERS
ALLOCATE Criar dataset ALLOC F(DD) DS('DS') NEW ...
FREE Liberar alocação FREE F(DD)
RENAME Renomear dataset RENAME 'OLD' 'NEW'
DELETE Apagar dataset DELETE 'USUARIO.DS'
SUBMIT Submeter job JCL SUBMIT 'PDS(MEMBRO)'
STATUS Status dos seus jobs STATUS JOBNOME
CANCEL Cancelar job em execução CANCEL JOBNOME
EXEC Executar CLIST ou REXX EXEC 'PDS(EXEC)' 'PARM'
CALL Executar módulo compilado CALL 'LOADLIB(PROG)'

6. TSO em batch — IKJEFT01

O TSO não é só interativo. Você pode rodar comandos TSO dentro de um job JCL usando o programa IKJEFT01 — o interpretador TSO em modo batch. Isso é útil para automatizar tarefas que normalmente precisariam de interação humana.

//TSOJOB JOB (CONTA),'LADY COBOL',CLASS=A,MSGCLASS=X //* //* Rodar comandos TSO em batch via IKJEFT01 //* //TSOSTEP EXEC PGM=IKJEFT01 //SYSTSPRT DD SYSOUT=* /* saída dos comandos TSO */ //SYSTSIN DD * /* comandos TSO a executar */ LISTCAT LEVEL('USUARIO') ALL LISTDS 'USUARIO.MINHA.PROC' MEMBERS /*

O DD SYSTSIN recebe os comandos TSO (um por linha), e o DD SYSTSPRT captura toda a saída — incluindo resultados de LISTCAT, LISTDS e outros.

Executando um programa COBOL via IKJEFT01

O IKJEFT01 também é usado para executar programas que requerem ambiente TSO — como programas COBOL que fazem chamadas TSO ou programas com ISPF Services:

//TSOSTEP EXEC PGM=IKJEFT01,DYNAMNBR=20 //STEPLIB DD DSN=USUARIO.MINHA.LOADLIB,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * CALL 'USUARIO.MINHA.LOADLIB(MEUPROG)' /*

🦕 Analogia — IKJEFT01 como cron job

Pense no IKJEFT01 como um cron job que executa comandos de terminal automaticamente. Em vez de abrir um terminal e digitar comandos à mão, você monta um script (o SYSTSIN) e o JES executa tudo em batch, sem intervenção humana. Ideal para rotinas de manutenção agendadas.

✅ Combinando IKJEFT01 com outros steps

Um job JCL pode misturar steps IKJEFT01 com steps comuns. Por exemplo: um step copia dados com IEBGENER, outro chama um COBOL via IKJEFT01, um terceiro faz limpeza com IDCAMS. Cada step pode usar COND para executar condicionalmente com base no return code do anterior.