Curso de Job Control Language (JCL)
Por: Arthur Burgos • 28/4/2016 • Projeto de pesquisa • 8.084 Palavras (33 Páginas) • 820 Visualizações
Curso de Job Control Language (JCL)
1. Conceitos básicos de JCL
Apresentamos a seguir uma série de informações contidas no manual IBM JCL User’s Guide e no IBM JCL Reference Manual, onde podem ser obtidos mais detalhes sobre a linguagem de controle de serviços, ou Job Control Language - JCL. Apresentaremos os comandos de JCL, informando para que servem, e como o programador pode executar serviços no mainframe, utilizando para isso os comandos de JCL.
A linguagem de controle de serviços – JCL – é usada nos mainframes IBM (em outros sistemas, essa linguagem recebe outras denominações, como por exemplo WFL) para especificar serviços a serem executados. Os comandos de JCL são submetidos pelo programador ao subsistema de entrada de serviços, ou Job Entry Subsystem – JES.
OBSERVAÇÃO: no âmbito deste curso, os itens escritos nesta cor azul se referem não à linguagem de JCL em si, mas sim a padrões e normas referentes a JCL, estabelecidos na Caixa Econômica Federal (CEF) – mais especificamente na REROPBR.
Os comandos de JCL basicamente servem para:
• especificar serviços (jobs*), e submetê-los ao sistema operacional, através do JES. Cada job determina a execução de um ou mais programas, que podem ser programas de aplicação, utilitários, compiladores, etc. Para cada job é utilizado um comando JOB;
• especificar os programas a serem executados, podendo passar-lhes dados adicionais. Uma das maneiras comuns de se especificar os programas é a utilização de comandos EXEC;
• especificar os atributos de cada conjunto de dados (data set), que geralmente se refere a um arquivo a ser usado pelos programas. Tais especificações normalmente são feitas por meio dos comandos Data Definition, ou DD.
(*) Às vezes, podem ser executadas também Started Tasks, que são armazenadas como membros de arquivos particionados, e podem conter procedures ou mesmo jobs completos, incluindo o próprio comando JOB. As started tasks normalmente são usadas para ativar processos críticos, como CICS, RMF, VPS, DB2, etc. Uma vantagem de se ativar Started Task como job em vez de como procedure, é que pode ser especificado, por exemplo, o que fazer com os outputs da Started Task (purgar, ficar em determinada classe, etc).
Normalmente, armazenamos os conjuntos de comandos de JCL (usualmente, um conjunto para cada job) em arquivos particionados, também chamados de PDS ou bibliotecas. O tamanho dos registros deve ser de 80 bytes, e o formato deve ser FIXO. O tamanho ideal do bloco é 27.920: DCB=(LRECL=80,RECFM=FB,BLKSIZE=27920).
Obs: na CEF, costumamos armazenar esses conjuntos em bibliotecas com nomes como: xxx.mmmmmmmm.JCL, onde xxx é a área (SUP, PRD, HMP) e mmmmmmmm é a matrícula do usuário. Já os conjuntos de JCL para uso em Produção e Homologação seguem outros padrões, tipo: SUP.SUPORTE.JCL; SUP.SUPORTE.UTILITY; NDS.CTM.V01.PRDANA (é a principal biblioteca de jobs de Produção, submetidos automaticamente pelo produto Control-M [CTM]); e outros.
2. Relação Completa dos Comandos de JCL
Ocasionalmente, a IBM cria algum novo comando de JCL. Atualmente, o manual de referência de JCL lista como disponíveis para utilização no z/OS os seguintes comandos de JCL:
Comando Função
CNTL Identifica o início de comandos de controle de subsistema.
COMMAND Submete um comando de JES ou do sistema operacional.
DD Data Definition. Define atributos de conjuntos de dados.
ELSE Faz parte do grupo IF-THEN-ELSE – execução condicional de steps.
ENDCNTL Marca o fim dos comandos de controle de subsistema.
ENDIF Faz parte do grupo IF-THEN-ELSE – execução condicional de steps.
EXEC Identifica o início de uma etapa (step) do job. É obrigatório.
IF Faz parte do grupo IF-THEN-ELSE – execução condicional de steps.
INCLUDE Identifica o membro de um arquivo particionado que contém comandos de JCL a serem incluídos no job.
JCLLIB Identifica um arquivo particionado que contém membros a serem referidos em comandos INCLUDE ou EXEC.
JOB Identifica o início de um job. É obrigatório. Deve ser o primeiro comando de JCL de um job.
OUTPUT Define opções de processamento para uma saída de programa.
PEND Marca o fim de uma procedure in-stream (isto é, dentro do job).
PROC Identifica o início de uma procedure in-stream – um conjunto de comandos de JCL que pode ser executado várias vezes.
SET Atribui valores a parâmetros simbólicos de JCL.
THEN Faz parte do grupo IF-THEN-ELSE – exec. condicional de steps.
XMIT Transmite registros para um nó. Obs: normalmente, este comando não é utilizado na CEF.
Todos os comandos acima têm o formato:
//nome operador operando(s) comentário
Nas colunas 1 e 2 deve haver obrigatoriamente duas barras inclinadas, como no exemplo:
//TESTE JOB SUPORTE,TIME=1 TESTE
(nome) (operador) (operandos, ou parâmetros) coment
Além dos listados acima, há ainda comandos de JCL:
• para submeter comandos de operador, como no exemplo:
...