Scripts REXX e JCL para Automação no z/OS
Script REXX para Automação no z/OS
BOM#DIA.REXX
/* REXX */
trace off;
CLEAR
SAY 'Ola Buga!'
SAY ' '
SAY 'Seja vem vindo...'
SAY ' '
SAY ' '
parse PULL rola
/******************************/
call verifica_primeira_vez_do_dia
say flag
if flag = 'S' then
do
call grava_ja_rodamos;
call aloca_debug_tool_files;
call hrecall_de_tudo;
end;
ISPF
exit 0
/******************************/
grava_ja_rodamos:
/******************************/
dsname = 'walbuga.apagador'
"ALLOC FI(Pdsout) DA('"dsname"') new
tracks space(10 10) dir(01)
Recfm(F B) LRECL(80)"
"FREE FI(Pdsout)"
"allocate dataset('walbuga.apagador(#15)') fi(#15) shr reuse"
"execio 0 diskw #15 (stem o. open)"
o.1 = 'CEBOLA '
"execio * diskw #15 (stem o. finis)"
"free fi(#15)"
return
/******************************/
/******************************/
dsname = 'walbuga.apagador'
"ALLOC FI(Pdsout) DA('"dsname"') new
tracks space(10 10) dir(01)
Recfm(F B) LRECL(80)"
"FREE FI(Pdsout)"
"allocate dataset('walbuga.apagador(#15)') fi(#15) shr reuse"
"execio 0 diskw #15 (stem o. open)"
o.1 = 'CEBOLA '
"execio * diskw #15 (stem o. finis)"
"free fi(#15)"
return
/******************************/
verifica_primeira_vez_do_dia:
/******************************/
"allocate dataset('walbuga.apagador(#15)') fi(#15) shr reuse"
"execio * diskr #15 (stem oia. finis)"
if pos('CEBOLA',oia.1) > '0' then
do
say 'TSO te derrubou, neh amigao ?'
flag = 'N'
end
else
do
say 'Divirta-se Buga'
flag = 'S'
end
return
/******************************/
aloca_debug_tool_files:
/******************************/
debug_tool = "'WALBUGA.G#NG.SEMANA09(DEBUG#01)'"
SUBMIT debug_tool
return
/******************************/
hrecall_de_tudo:
recall = "'WALBUGA.G#R0.DATA(JCL#0004)'"
SUBMIT recall
return
JCL para Alocação de Arquivos de Debug (DEBUG#01)
WALBUGA.G#NG.SEMANA09(DEBUG#01)
//WALBUGA2 JOB NG,BUGA,CLASS=K RESTART=STEP#002
/*NOTIFY WALBUGA
//*--------------------------------------------------------------------
//* Aloca arquivos utilizados pelo debug tool no z/OS
//*--------------------------------------------------------------------
//STEP#001 EXEC PGM=IEFBR14
//SAVINGS DD DSN=WALBUGA.DBGTOOL.SAVESETS,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(20,10)),
// DCB=(LRECL=3204,BLKSIZE=0,DSORG=PS,RECFM=VB)
//SETTINGS DD DSN=WALBUGA.DBGTOOL.SAVEBPS,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(20,10)),
// DCB=(LRECL=3204,BLKSIZE=0,DSORG=PO,RECFM=VB),
// DSNTYPE=LIBRARY
//*--------------------------------------------------------------------
//* Carrega configuracoes que o Buga gosta!
//*--------------------------------------------------------------------
//STEP#002 EXEC PGM=IEBGENER
//SYSIN DD DUMMY
//SYSPRINT DD SYSOUT=X
//SYSUT1 DD *
COMMENT YES
SET ASSEMBLER OFF;
SET ASSEMBLER STEPOVER EXTONLY;
SET AUTOMONITOR ON NOLOG CURRENT;
SET CHANGE STATEMENT;
SET COLOR TURQUOISE NONE HIGH TITLE HEADERS;
SET COLOR GREEN NONE LOW TITLE FIELDS;
SET COLOR TURQUOISE REVERSE LOW MONITOR AREA;
SET COLOR TURQUOISE REVERSE LOW MONITOR LINES;
SET COLOR WHITE REVERSE LOW SOURCE AREA;
SET COLOR TURQUOISE REVERSE LOW SOURCE PREFIX;
SET COLOR YELLOW REVERSE LOW SOURCE SUFFIX;
SET COLOR RED REVERSE HIGH SOURCE CURRENT;
SET COLOR GREEN NONE LOW SOURCE BREAKPOINTS;
SET COLOR TURQUOISE NONE HIGH PROGRAM OUTPUT;
SET COLOR YELLOW NONE LOW TEST INPUT;
SET COLOR GREEN NONE HIGH TEST OUTPUT;
SET COLOR BLUE REVERSE HIGH LOG LINES;
SET COLOR WHITE NONE HIGH COMMAND LINE;
SET COLOR GREEN REVERSE HIGH WINDOW HEADERS;
SET COLOR BLUE REVERSE HIGH TOFEOF MARKER;
SET COLOR RED NONE HIGH TARGET FIELD;
SET DEFAULT LISTINGS;
SET DEFAULT DBG;
SET DEFAULT MDBG;
SET DEFAULT SCROLL PAGE;
SET DEFAULT VIEW STANDARD;
SET DEFAULT WINDOW SOURCE;
SET DISASSEMBLY OFF;
SET DYNDEBUG ON;
SET ECHO ON;
SET EXECUTE ON;
SET EXPLICITDEBUG OFF;
SET FIND BOUNDS 1 *;
SET HISTORY ON 100;
SET IGNORELINK OFF;
SET LDD SINGLE;
SET LIST TABULAR OFF;
SET LIST BY SUBSCRIPT OFF;
SET LOG OFF;
SET LOG KEEP 1000;
SET LOG NUMBERS ON;
SET LONGCUNAME ON;
SET MONITOR DATATYPE OFF;
SET MONITOR LIMIT 1000;
SET MONITOR NUMBERS ON;
SET MONITOR WRAP ON;
SET MSGID OFF;
SET PACE 2;
SET PF1 "?" = ?;
SET PF2 "STEP" = STEP;
SET PF3 "QUIT" = QUIT;
SET PF4 "LIST" = LIST;
SET PF5 "FIND" = IMMEDIATE FIND;
SET PF6 "AT/CLEAR" =AT TOGGLE;
SET PF7 "UP" = IMMEDIATE UP;
SET PF8 "DOWN" = IMMEDIATE DOWN;
SET PF9 "GO" = GO;
SET PF10 "ZOOM" = IMMEDIATE ZOOM;
SET PF11 "ZOOM LOG" =IMMEDIATE ZOOM LOG;
SET PF12 "RETRIEVE" =IMMEDIATE RETRIEVE;
SET PF13 "?" = ?;
SET PF14 "STEP" = STEP;
SET PF15 "QUIT" = QUIT;
SET PF16 "LIST" = LIST;
SET PF17 "FIND" = IMMEDIATE FIND;
SET PF18 "AT/CLEAR" =AT TOGGLE;
SET PF19 "UP" = IMMEDIATE UP;
SET PF20 "DOWN" = IMMEDIATE DOWN;
SET PF21 "GO" = GO;
SET PF22 "ZOOM" = IMMEDIATE ZOOM;
SET PF23 "ZOOM LOG" =IMMEDIATE ZOOM LOG;
SET PF24 "RETRIEVE" =IMMEDIATE RETRIEVE;
SET POPUP 15;
SET PROMPT LONG;
SET REFRESH OFF;
SET RESTORE SETTINGS AUTO;
SET RESTORE BPS AUTO;
SET RESTORE MONITORS AUTO;
SET REWRITE 50;
SET SAVE SETTINGS AUTO;
SET SAVE BPS AUTO FILE WALBUGA.DBGTOOL.SAVEBPS;
SET SAVE MONITORS AUTO;
SET SCROLL DISPLAY ON;
SET SUFFIX ON;
SET WARNING ON;
WINDOW SIZE 3 LOG;
WINDOW SIZE 28 SOURCE;
WINDOW SIZE 8 MONITOR;
SET SCREEN ON;
SET SCREEN 1 MONITOR SOURCE LOG;
SET KEYS ON 12;
SET MONITOR COLUMN ON;
//SYSUT2 DD DSN=WALBUGA.DBGTOOL.SAVESETS,
// DISP=(OLD,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(20,10)),
// DCB=(LRECL=3204,BLKSIZE=0,DSORG=PS,RECFM=VB)
//
//*
SET SAVE SETTINGS AUTO ;
SET SAVE BPS AUTO ;
SET SAVE MONITORS AUTO ;
SET RESTORE SETTINGS AUTO ;
SET RESTORE BPS AUTO ;
SET RESTORE MONITORS AUTO ;
SET AUTO ON;
WINDOW SIZE 30 SOURCE; window size 3 log;
JCL para Recall de Datasets do Usuário
'WALBUGA.G#R0.DATA(JCL#0004)'
//WALBUGA1 JOB R8,'BUGA',MSGLEVEL=(1,1),CLASS=K,MSGCLASS=1,RD=NC
//*---------------------------------------------------------------------
//*
//* PROCEDIMENTO PARA RECALL DE TODOS OS DATASETS DE UM USUARIO
//*
//*---------------------------------------------------------------------
/*NOTIFY WALBUGA ** ME NOTIFIQUE
/*XEQ ECA ** RODAR EM SECA
//*---------------------------------------------------------------------
// EXPORT SYMLIST=(USUARIO,ESTRELA)
// SET USUARIO=&SYSUID
// SET ESTRELA='*'
//*---------------------------------------------------------------------
//* SCRATCH TODOS OS ARQUIVOS DE SAIDA
//*---------------------------------------------------------------------
//STEP#001 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *,DLM=FIM,SYMBOLS=JCLONLY
DELETE &USUARIO..LISTCAT.OUTPUT
FIM
//*---------------------------------------------------------------------
//* SOLICITA RECALL DOS ARQUIVOS --- OPS NAO PODE
//*---------------------------------------------------------------------
//STEP#002 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *,SYMBOLS=JCLONLY
HRECALL &USUARIO..&ESTRELA NOWAIT
//*---------------------------------------------------------------------
//* Entra em ação o plano 'B'
//* LISTA TODOS OS DATASETS DO USUARIO
//*---------------------------------------------------------------------
//STEP#003 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *,SYMBOLS=JCLONLY
LISTCAT LEVEL(&USUARIO) -
OUTFILE(OUTDD)
//OUTDD DD DSN=&USUARIO..LISTCAT.OUTPUT,
// DCB=(RECFM=VBA,LRECL=125,BLKSIZE=629),UNIT=DASD,
// SPACE=(CYL,(1,1)),
// DISP=(NEW,CATLG)
//*---------------------------------------------------------------------
//* COPIA PARA ARQUIVO TEMPORARIO
//*---------------------------------------------------------------------
//STEP#004 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD DUMMY
//SYSUT1 DD DSN=&USUARIO..LISTCAT.OUTPUT,DISP=SHR
//SYSUT2 DD DSN=&&TMP1,
// DCB=(RECFM=VBA,LRECL=125,BLKSIZE=629),UNIT=DASD,
// SPACE=(CYL,(1,1)),
// DISP=(MOD,PASS)
//*---------------------------------------------------------------------
//* EXTRAI DO RELATORIO DO IDCAMS QUE LISTOU OS ARQUIVOS O NOME DOS
//* DATASETS QUE SERÃO RECUPERADOSLOGO NA SEQUENCIA
//*---------------------------------------------------------------------
//STEP#005 EXEC PGM=SORT ,COND=(0,NE)
//SORTIN DD DSN=&&TMP1,DISP=(OLD,DELETE)
//SORTOUT DD DSN=&&TMP2,
// RECFM=FB,LRECL=00060,
// SPACE=(CYL,(10,10),RLSE),
// DISP=(MOD,PASS)
//SORTIN DD SYSOUT=*
//SYSIN DD *,SYMBOLS=JCLONLY
SORT FIELDS=COPY
INCLUDE COND=(22,7,EQ,C'&USUARIO'),FORMAT=CH *** 4 BYTES DO RDW
OUTFIL FNAMES=SORTOUT,VTOF,
OUTREC=(C' HRECALL ',22,44,C' NOWAIT')
//SYSOUT DD SYSOUT=*
//SORTMSG DD SYSOUT=*
//*---------------------------------------------------------------------
//* REALIZA O HRECALL DOS MEMBROS DO USUARIO
//*---------------------------------------------------------------------
//STEP#006 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
/* Vai que alguem resolveu customizar */
PROFILE NOPREFIX
// DD DSN=&&TMP2,DISP=(OLD,DELETE)
//*
//*---------------------------------------------------------------------
//* ENVIA MENSAGEM INFORMANDO O FINAL DO PROCESSAMENTO
//*---------------------------------------------------------------------
//STEP#007 EXEC PGM=IKJEFT01
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *,SYMBOLS=JCLONLY
SEND 'Processo de Recall de arquivos finalizado! ' USER(&USUARIO)
/*