Translate

Mostrar mensagens com a etiqueta symbolic parameters. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta symbolic parameters. Mostrar todas as mensagens

quarta-feira, 24 de janeiro de 2007

O que é PROC no JCL?

 

Bellacosa Mainframe o que é PROC em Job JCL

O que é PROC no JCL?

Quando começamos a trabalhar com JCL em ambientes corporativos, rapidamente encontramos algo muito importante:

PROC

Ela é uma das estruturas mais usadas em produção no z/OS.

Praticamente todo ambiente mainframe grande utiliza:

  • PROCs;

  • bibliotecas PROC;

  • variáveis simbólicas;

  • JCL reutilizável.


O que significa PROC?

PROC significa:

Procedure

Em português:

procedimento reutilizável.


Definição simples

Uma PROC é:

um JCL reutilizável.

Ela permite:

  • evitar repetição;

  • padronizar execução;

  • facilitar manutenção;

  • reutilizar STEPs.


Analogia simples

Imagine uma receita pronta.

Em vez de escrever toda a receita novamente:

  • você reutiliza o modelo;

  • apenas troca alguns ingredientes.

PROC funciona exatamente assim.


Problema que PROC resolve

Imagine uma empresa com:

  • 500 JOBs;

  • todos executando SORT;

  • DB2;

  • backup;

  • mesmas etapas.

Sem PROC:

  • muito JCL duplicado;

  • manutenção difícil;

  • alto risco operacional.


Então surgiu a PROC

Ela permite:

centralizar lógica JCL.


Exemplo sem PROC

//STEP1 EXEC PGM=SORT
//SORTIN DD ...
//SORTOUT DD ...
//SYSIN DD ...

Repetido centenas de vezes.


Exemplo com PROC

//STEP1 EXEC PROC=SORTPROC

Muito mais simples.


Onde a PROC fica?

Normalmente em:

bibliotecas PROC.

Exemplo:

SYS1.PROCLIB

ou:

USUARIO.PROCLIB

Como o sistema encontra PROC?

Usando:

JCLLIB

ou bibliotecas configuradas no JES2.


Estrutura básica de PROC


Exemplo simples

//MINHAPRC PROC
//STEP1   EXEC PGM=IEFBR14
//PEND

Entendendo


PROC

Início da procedure.


PEND

Fim da procedure.


Como usar PROC?

No JOB:

//STEP1 EXEC PROC=MINHAPRC

Fluxo simples

JOB
 ↓
EXEC PROC
 ↓
JES2 expande PROC
 ↓
EXECUÇÃO

O que significa “expandir PROC”?

O JES2 substitui:

EXEC PROC

pelo conteúdo real da PROC.


O usuário vê isso?

Sim.

No spool:

JESJCL

mostra o JCL expandido.


O que são variáveis simbólicas?

Um dos recursos mais importantes das PROCs.

Também chamadas:

symbolic parameters.


Elas funcionam como variáveis

Permitem alterar:

  • datasets;

  • programas;

  • parâmetros;

  • classes;

  • SYSOUT.

Sem alterar a PROC original.


Exemplo simples

//MINHAPRC PROC ARQ=CLIENTES
//STEP1 EXEC PGM=MEUPGM
//INPUT DD DSN=&ARQ,
//      DISP=SHR
//PEND

O que significa "&ARQ"?

Variável simbólica.


Como usar?

//STEP1 EXEC PROC=MINHAPRC,
//       ARQ=PRODUCAO.CLIENTES

Resultado expandido

//INPUT DD DSN=PRODUCAO.CLIENTES

Isso é extremamente poderoso

Porque permite:

  • reutilização;

  • flexibilidade;

  • padronização.


Variáveis mais comuns


Dataset

&DSN

Classe

&CLASS

Programa

&PGM

SYSOUT

&OUT

Exemplo profissional

//COBPROC PROC PGM=COBPGM,
//             IN=CLIENTE.ARQ,
//             OUT=RELAT.SAIDA
//STEP1 EXEC PGM=&PGM
//INPUT DD DSN=&IN,DISP=SHR
//OUTPUT DD DSN=&OUT,
// DISP=(NEW,CATLG,DELETE)
//PEND

Chamada

//STEP1 EXEC PROC=COBPROC,
// PGM=FINANCE,
// IN=FINAN.ENTRADA,
// OUT=FINAN.SAIDA

O que é PROC catalogada?

PROC armazenada em:

PROCLIB.

Mais comum em produção.


O que é PROC inline?

PROC escrita dentro do próprio JOB.


Exemplo inline

//MINHA PROC
//STEP1 EXEC PGM=IEFBR14
//PEND
//
//JOB1 EXEC MINHA

Vantagens da PROC


Reutilização


Padronização


Menos erros


Manutenção centralizada


Menos duplicação


Muito usada em produção


O que é override?

Alterar parâmetros da PROC no JOB.


Exemplo

PROC:

//STEP1 EXEC PGM=COBOL

JOB:

//STEP1.STEP1 EXEC PGM=TESTE

Isso substitui o EXEC original


O que é nested PROC?

PROC chamando outra PROC.

Muito usado em ambientes grandes.


O que é JCLLIB?

Define bibliotecas PROC.


Exemplo

//JCLLIB JCLLIB ORDER=USUARIO.PROCLIB

O que acontece se PROC não for encontrada?

Erro no JESJCL.

Exemplo:

PROC NOT FOUND

Curiosidades incríveis

1. Grandes bancos possuem milhares de PROCs


2. Muitas automações batch dependem delas


3. Algumas PROCs existem há décadas


4. PROCs ajudam muito em padronização operacional


Erros comuns de iniciantes


1. Esquecer PEND

Erro clássico.


2. Variável simbólica incorreta

Exemplo:

&ARQ

não definida.


3. PROC não encontrada

Problema de PROCLIB.


4. Override errado

Pode alterar execução sem perceber.


Dicas importantes

Sempre use nomes claros


Padronize variáveis


Leia JESJCL expandido


Use PROC para lógica repetitiva


Como PROC aparece no dia a dia?

Praticamente em tudo:

  • COBOL;

  • DB2;

  • SORT;

  • backups;

  • produção batch;

  • automação.


Por que aprender PROC?

Porque PROC é:

uma das estruturas mais importantes do JCL corporativo.

Quem domina PROC entende:

  • automação batch;

  • reutilização JCL;

  • produção z/OS;

  • arquitetura operacional.


Resumo rápido

ConceitoSignificado
PROCJCL reutilizável
PENDFinal da PROC
Symbolic ParameterVariável JCL
PROCLIBBiblioteca de PROC
OverrideSubstituição de parâmetro
Inline PROCPROC dentro do JOB
Cataloged PROCPROC em biblioteca

Conclusão

PROC é um dos recursos mais poderosos do JCL no ambiente z/OS.

Ela permite reutilizar etapas batch, padronizar processamento e criar JOBs flexíveis usando variáveis simbólicas, sendo fundamental para operações corporativas em mainframe IBM Z.