Quando executamos uma programa batch via um JCL, muitas, se não a maioria das vezes, necessitamos utilizar parâmetros. Existem as seguintes opções de parâmetros utilizadas:
- 1 parâmetro que é redefinido dentro do programa:
01 #PARM (A2) 01 REDEFINE #PARM 02 #P1 (A1) 02 #P2 (A2)
Exemplo no JCL:
MEUPROG AB (em que 'A' seria entendido como #P1 e 'B' como #P2)
- 1 parâmetro como grupo, com “sub-parâmetros” que são informados separadamente:
01 #PARM 02 #P1 (A1) 02 #P2 (A2)
Exemplo no JCL:
MEUPROG A B (em que 'A' seria entendido como #P1 e 'B' como #P2)
A segunda utilização é comum para parâmetros com tamanho indefinido, ou seja, reservamos um espaço de 40 caracteres, mas passível de ser informado somente 6, por exemplo, sendo os últimos completados com espaços como um parâmetro #NOME com ‘DANIEL’.
Mas há possibilidaddes de utilizarmos a primeira alternativa mesmo com espaços sem que o programa entenda, ou o JCL informe co programa, que são 2 parâmetros ou mais quando na verdade informo somente 1. Podemos passar o parâmetro na mesma linha ou nas linhas subseqüentes. Se passarmos na mesma linha, isso será interpretado que cada espaço define o término de um parâmetro; se colocarmos um em cada linha, a quebra de linha é que será interpretada como término de parâmetro. Vamos a um exemplo:
Meu programa vai receber um parâmetro que será quebrado, por algum motivo, em 4 variáveis:
- Opção
- Nome
- Setor
- Ano
A ‘Opção’ é um numérico de 1 posição que será usada para definir algo lá dentro do programa; o ‘Nome’ é um alfanumérico de 30 posições que pode conter espaços no final; ‘Setor’ é um alfanumérico de 10 posições que também pode conter espaços no final; ‘Ano’ tem tamanho fixo de 4 posições e é numérico.
Se executarmos o JCL da seguinte maneira
MEUPROG1 9DANIEL TI-DEV 2008
haverá interpretação de 3 parâmetros: 9DANIEL,TI-DEV e 2008.
Mas se executarmos da seguinte maneira
MEUPROG1 9DANIEL TI-DEV 2008
haverá interpretação de um só parâmetro.
É isso. Espero que isso ajude alguém neste mundo misterioso dos jobs!
Abraço!
Escrito por Daniel