Como passar argumentos para o programa REXX através da JCL
-
21-09-2019 - |
Pergunta
Podemos passar argumentos para um programa REXX da JCL?
Suponho que a JCL PARM pode ser usada como usamos para transmitir argumentos para os programas COBOL. Coloque suas idéias aqui ...
Solução
Você quer EXEC PGM=IRXJCL,PARM='member_name exec_args'
. SYSEXEC
deve apontar para o PDS contendo member name
. SYSTSIN
é a entrada para PULL
, SYSTSPRT
é o dd de saída para SAY
Confira o "Usando o Rexx no TSO/E e em outros espaços de endereço do MVS"Capítulo no "Guia do usuário TSO/E Rexx"Livro (SA22-7791) Para um exemplo completo.
Outras dicas
Uma nota adicional: se o seu Rexx Exec usar os serviços ISPF, você poderá executá -lo em lote com PGM = ikjeftxx (xx sendo um sufixo variável) e alocando ISPXLIB na etapa de trabalho.
Se os parâmetros juntamente com o nome do membro do Rexx excederem 100 bytes, o método mencionado por Ron Patterson não funcionará, pois a sintaxe JCL permite apenas um comprimento máximo de paramater de 100 bytes. Nesse caso, recomendo o uso de ikjeftxx (já publicado por Tony). Você então precisa passar no nome do programa REXX como dados do Instruam para Systsin. Os parâmetros deste programa podem simplesmente escrever por trás do nome do programa. Quando você precisar de mais de uma linha, use o hífen como último caractere de uma linha para indicar a concatenação com a seguinte linha. Exemplo:
//EXAMPLE EXEC PGM=IKJEFT01,REGION=4096K,DYNAMNBR=30
//SYSPRINT DD SYSOUT=*
//SYSEXEC DD DISP=SHR,DSN=YOUR.REXX.LIBRARY
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
SCHLABB PARAMETER1 PARAMETER2 PARAMETER3 -
VERY_LONG_PARAMETER4 -
LAST_PARAMETER5
/*
//
Eu estava recebendo RC (-3) para o Execio Basic, libdef, comandos quando tentei executar o irxjcl. Eu gostaria que houvesse uma melhor documentação sobre o que o irxjcl pode e não pode fazer.
Finalmente, seguiu a abordagem do link abaixo, para passar valores dinamicamente para um rexx, escrevendo -os para um arquivo e leitura do arquivo. Como executar o SQL Dymanic através do utilitário ikjeft01?