Pesquisar este blog

Mostrando postagens com marcador debug tool. Mostrar todas as postagens
Mostrando postagens com marcador debug tool. Mostrar todas as postagens

quinta-feira, 24 de janeiro de 2019

REXX para bom dia! - Gera arquivos de configuração do Debug Tool - Submete Hrecall para todos os membros

Scripts REXX e JCL para Automação no z/OS

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)

DEBUG#01.JCL

//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)  
/*                                                                      

terça-feira, 2 de maio de 2017

IBM Debug Tool perdendo os break points a cada execução e não guarda a configuração da tela

JCL para Recuperar Configuração do Debug Tool no Mainframe

No mainframe, o Debug Tool utiliza dois arquivos de controle: um para salvar os breakpoints e outro para guardar suas configurações personalizadas. Como no ambiente em que trabalho os arquivos são deletados automaticamente sem aviso, já perdi minhas preferências algumas vezes. Para não passar mais por isso, montei um JCL que recria tudo de forma automática. Agora, sempre que entro no sistema, rodo junto com o HRECALL e mantenho minha configuração do jeito que gosto!


//C001BUGA JOB BUGA,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 - DO NOT MODIFY THIS LINE 12/18/2018 10:50:06 AM;
      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)
//

Dica: Usando esse JCL, você nunca mais perde suas configurações do Debug Tool, mesmo que o sistema delete seus arquivos sem aviso. Personalize o nome dos datasets conforme sua necessidade!

Figura 1: Tela do Debug Tool no mainframe z/OS mostrando arquivos de configuração e breakpoints alocados
Figura 1: Debug Tool iniciando o debug de um programa