sexta-feira, abril 20, 2018

Programando Natural - 3 Parte

Nesta postagem vamos criar o nosso primeiro sistema em Natural, este sistema o fitotecário submete os jobs de backup para os operadores liberarem a noite e na madrugada para rodar, vou colocar os 4 principais programas para rodar esse sistema (o programa de menu principal, o programa submete os jobs de backup, um subprograma que vai ser um exemplo de jcl de backup, e um programa que submete os backup em separado, opção 00).

Telas

O menu principal:

 ------------------------------------------------------------------------------
 AA01055                CONTROLE DE BACKUP DA FITOTECA                 TLMSMENU
 13:39:21 ------------------------------------------------------------ 11/05/09
                           SUBMETER JOBS DE BACKUP                     PRODUCAO
                                                                               
             +-------------------------------------------------+               
             |      00 - JOBS DE BACKUP SEPARADOS              |               
             |      10 - JOBS DE BACKUP DA SEGUNDA-FEIRA       |               
             |      20 - JOBS DE BACKUP DA TERCA-FEIRA         |               
             |      30 - JOBS DE BACKUP DA QUARTA-FEIRA        |               
             |      40 - JOBS DE BACKUP DA QUINTA-FEIRA        |               
             |      50 - JOBS DE BACKUP DA SEXTA-FEIRA         |               
             |      60 - JOBS DE BACKUP SEMANAL/SEGURANCA      |               
             |      70 - JOBS DE BACKUP MENSAL/SEGURANCA       |               
             |      80 - JOBS DE BACKUP ANUAL/SEGURANCA        |               
             +-------------------------------------------------+               
                                                                               
                          DIGITE A OPCAO DESEJADA __                           
                                                                               
                             TECLE PF3 PARA SAIR                               
                                                                               
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
                  SAIR                                                  SAIR

 Por exemplo - Escolhemos a opção 10 - Jobs de Backup de Segunda-Feira - vai cair nesta opção para digitar S (sim) ou N (não)

 ------------------------------------------------------------------------------
 AA01055                      SERVICOS INTERNOS                        TLMSCL01
 13:43:43 ------------------------------------------------------------ 11/05/09
                           BACKUP DE SEGUNDA-FEIRA                     PRODUCAO
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                     SUBMETER OS BACKUPS: _ (SIM - NAO)                        
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
      FIN         MENU                                                        

Depois de digitar S (sim) vai submeter os jobs de backup do turno da noite e da madrugada;

JOB     NUMBER     Q J O SYST  DEST     PRI  ST      LINES  FORM  FCB  FLASH   
AAFAHDIA J.05146    I B -                  9  H           0                     
AAFASDIA J.05147    I B -                  9  H           0                     
AABSRES1 J.05148    I B -                  9  H           0                     
AABSBACK J.05149    I B -                  9  H           0                     
AABSBKPB J.05150    I B -                  9  H           0                     
AAFABDIA J.05151    I B -                  9  H           0                     
AACCSUBT J.05152    I B -                  9  H           0                     
... 31 PERCENT SPOOL UTILIZATION.                                              
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
------------------------------------ JOBS      7  TOTAL RECORDS            0   
OP=Q CL=ALL IN=I JB= DS=1 SI=SM LR=1 LL=133 PP=0 DC= RL=999999 AD=J             
DE= SC= PT= SQ=P# RR=0 OC= SD=2000   11.05.2009, 13:54:07

Programa - TLMSMENU

O programa de menu inicial, vou chamar ele de TLMSMENU, com ele que vamos escolher que dia vai ser submetido os jobs de backups;
   
>                                       > +  Program     TLMSMENU Lib PRODUCAO 
Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
  0010 *** ---------------------------------------------------------------- ***
  0020 *          MENU DA FITOTECA PARA SUBMETER OS JOBS DE BACKUP            *
  0030 * -------------------------------------------------------------------- *
  0040 *  AUTOR PELO CLAUDEMAR                                                *
  0050 * CRIADO EM 10/2004                                                    *
  0060 *** ---------------------------------------------------------------- ***
  0070 DEFINE DATA LOCAL                                                       
  0080 1 #ARQ1 (A2)                                                            
  0090 END-DEFINE                                                              
  0100 *** ---------------------------------------------------------------- ***
  0110 FORMAT KD=ON                                                            
  0120 SET CONTROL 'U'                                                         
  0130 SET KEY PF3 NAMED 'SAIR'                                                
  0140 SET KEY PF12 NAMED 'SAIR'                                               
  0150 REPEAT                                                                  
  0160 IF *PF-KEY EQ 'PF3' OR = 'PF12'                                         
  0170 TERMINATE                                                               
  0180 *** ---------------------------------------------------------------- ***
  0190   INPUT (IP=OFF SG=OFF AD=MIL'_')                                       
  0200     02T '-' (78)                                                        
  0210     /       02T *USER                                            
  0220     25T 'CONTROLE DE BACKUP DA FITOTECA'(I)                      
  0230     72T  *PROGRAM                                                
  0240     /       02T  *TIME(AL=8)                                     
  0250     11T '-' (60)                                                 
  0260     72T  *DATE                                                   
  0270 /    28T 'SUBMETER JOBS DE BACKUP'(I) 72T *LIBRARY-ID /          
  0280 /14T'+-------------------------------------------------+'        
  0290 /14T'|' '     00'(GR)'- JOBS DE BACKUP SEPARADOS              |' 
  0300 /14T'|' '     10'(GR)'- JOBS DE BACKUP DA SEGUNDA-FEIRA       |' 
  0310 /14T'|' '     20'(GR)'- JOBS DE BACKUP DA TERCA-FEIRA         |' 
  0320 /14T'|' '     30'(GR)'- JOBS DE BACKUP DA QUARTA-FEIRA        |' 
  0330 /14T'|' '     40'(GR)'- JOBS DE BACKUP DA QUINTA-FEIRA        |' 
  0340 /14T'|' '     50'(GR)'- JOBS DE BACKUP DA SEXTA-FEIRA         |' 
  0350 /14T'|' '     60'(GR)'- JOBS DE BACKUP SEMANAL/SEGURANCA      |' 
  0360 /14T'|' '     70'(GR)'- JOBS DE BACKUP MENSAL/SEGURANCA       |' 
  0370 /14T'|' '     80'(GR)'- JOBS DE BACKUP ANUAL/SEGURANCA        |' 
  0380 /14T'+-------------------------------------------------+'        
  0390 //27T'DIGITE A OPCAO DESEJADA'(YE) #ARQ1(AD=MIL'_')              
  0400 //30T'TECLE PF3 PARA SAIR'(I)                                    
  0410 *** ---------------------------------------------------------------- ***
  0420 *                  PROGRAMAS QUE CHAMAM OS BACKUPS                     *
  0430 *** ---------------------------------------------------------------- ***
  0440 *   TLMSMENU - MENU PARA RODAR OS JOBS                                 *
  0450 *   TLMSCL01 - JOB DO BACKUP SEGUNDA-FEIRA                             *
  0460 *   TLMSCL02 - JOB DO BACKUP TERCA-FEIRA                               *
  0470 *   TLMSCL03 - JOB DO BACKUP QUARTA-FEIRA                              *
  0480 *   TLMSCL04 - JOB DO BACKUP QUINTA-FEIRA                              *
  0490 *   TLMSCL05 - JOB DO BACKUP SEXTA-FEIRA                               *
  0500 *   TLMSCL06 - JOB DO BACKUP SEMANAL + SEGURANCA                       *
  0510 *   TLMSCL07 - JOB DO BACKUP MENSAL + SEGURANCA                        *
  0520 *   TLMSCL08 - JOB DO BACKUP ANUAL + SEGURANCA                         *
  0530 *   TLMSCL10 - JOB DE BACKUP SEPARADOS                                 *
  0540 *   TLMSCL99 - RETORNA AO MENU INICIAL                                 *
  0550 *** ---------------------------------------------------------------- ***
  0560 IF #ARQ1 EQ '10'                                                        
  0570   FETCH 'TLMSCL01'                                                      
  0580 IF #ARQ1 EQ '20'                                                        
  0590   FETCH 'TLMSCL02'                                                      
  0600 IF #ARQ1 EQ '30'                                                        
  0610   FETCH 'TLMSCL03'
  0620 IF #ARQ1 EQ '40'  
  0630   FETCH 'TLMSCL04'
  0640 IF #ARQ1 EQ '50'  
  0650   FETCH 'TLMSCL05'
  0660 IF #ARQ1 EQ '60'  
  0670   FETCH 'TLMSCL06'
  0680 IF #ARQ1 EQ '70'  
  0690   FETCH 'TLMSCL07'
  0700 IF #ARQ1 EQ '80'  
  0710   FETCH 'TLMSCL08'
  0720 IF #ARQ1 EQ '01'  
  0730   FETCH 'TLMSCL88'
  0740 IF #ARQ1 EQ '00'  
  0750   FETCH 'TLMSCL11'
  0760 END

Programa - TLMSCL01

O programa de menu inicial, com ele que vamos escolher que dia vamos submeter os jobs de backups, observe na linha 320 que ele faz um CALLNAT, que é o comando para chamar um subprograma, que são os programas dos jcl dos backups;

>                                       > +  Program     TLMSCL01 Lib PRODUCAO 
Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
  0010 *** ---------------------------------------------------------------- ***
  0020 ***              BACKUP DE SEGUNDA FEIRA DA FITOTECA                 ***
  0030 *** ---------------------------------------------------------------- ***
  0040 DEFINE DATA LOCAL                                                       
  0050 1 #ARQ1(A1)                                                             
  0060 END-DEFINE                                                              
  0070 *** ---------------------------------------------------------------- ***
  0080 ***                                 PF'S                             ***
  0090 *** ---------------------------------------------------------------- ***
  0100 FORMAT KD=ON                                                            
  0110 SET CONTROL 'U'                                                         
  0120 SET KEY PF3 NAMED 'MENU'                                                
  0130 SET KEY PF1='FIN'                                                       
  0140 *** ---------------------------------------------------------------- ***
  0150 ***                                MENU                              ***
  0160 *** ---------------------------------------------------------------- ***
  0170   INPUT (IP=OFF SG=OFF AD=MIL'_')                                       
  0180     02T '-' (78)                                                        
  0190     /       02T *USER                                                   
  0200     31T 'SERVICOS INTERNOS'(I)                                          
  0210     72T *PROGRAM                                                        
  0220     /       02T  *TIME(AL=8)                                            
  0230     11T '-' (60)                                                        
  0240     72T  *DATE                                                          
  0250 /      28T 'BACKUP DE SEGUNDA-FEIRA' (I)  72T *LIBRARY-ID               
  0260 ///////22T 'SUBMETER OS BACKUPS:' #ARQ1 '(SIM - NAO)'                   
  0270 *** ---------------------------------------------------------------- ***
  0280   IF #ARQ1 NE 'S'                                                       
  0290   FETCH 'TLMSMENU'                                                      
  0300 *** ---------------------------------------------------------------- ***
  0310   IF #ARQ1 EQ 'S' OR = 's'                                              
  0320   CALLNAT 'AAFAHDIA'                                                    
  0330   CALLNAT 'AAFASDIA'                                                    
  0340   CALLNAT 'AABSRES1'                                                    
  0350   CALLNAT 'AABSBACK'                                                    
  0360   CALLNAT 'AABSBKPB'                                                    
  0370   CALLNAT 'AAFABDIA'                                                    
  0380   CALLNAT 'AACCSUBT'                                                    
  0390     FETCH 'TLMSMENU'                                                    
  0400 *** ---------------------------------------------------------------- ***
  0410 IF #ARQ1 = ' ' FETCH 'TLMSMENU'
  0420 END

Subprograma - AAFAHDIA

Este é o subprograma que vai submeter o job de backup de um determinado banco de dados - este é um exemplo para os demais;

                                                                              
 >                                       > +  Subprogram  AAFAHDIA Lib FITOTECA 
 Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
  0010 * ----------------------------------------------------------------- *   
  0020 *               BACKUP DO BANCO DA FOLHA DE PAGAMENTO               *   
  0030 * ----------------------------------------------------------------- *   
  0040 DEFINE DATA                                                             
  0050 LOCAL                                                                   
  0060 1 #WCALLER    (A4) INIT <'NAT'>                                         
  0070 1 #WJOBNUM    (A8)                                                      
  0080 1 REDEFINE #WJOBNUM                                                     
  0090   2 FILLER    (A3)                                                      
  0100   2 #WNUMJOB  (N5)                                                      
  0110 1 #WC         (A80/23)                                                  
  0120 1 #WTAB       (A4)                                                      
  0130 1 REDEFINE #WTAB                                                        
  0140   2 #WTIPO    (A1)                                                      
  0150   2 #WCODIGO  (N3)                                                      
  0160 1 #WRC        (N1)                                                      
  0170 1 #WQTE       (B2)                                                      
  0180 1 #WC1        (A80)                                                     
  0190 * ----------------------------------------------------------------- *   
  0200 *               DEFININDO OS PARAMETROS DO JCL                      *   
  0210 * ----------------------------------------------------------------- *   
  0220 END-DEFINE                                                              
  0230 MOVE                                                                    
  0240 '//AAFAHDIA JOB (AAFS,DIBD),SUPORTE,CLASS=B,MSGCLASS=A,TYPRUN=HOLD'     
  0250                                                               TO #WC(1) 
  0260 MOVE '//*UQ ALLOW'                                            TO #WC(2) 
  0270 MOVE '//* --------------------------------------------------' TO #WC(3) 
  0280 MOVE '//*   BACKUP DO BANCO DA FOLHA DE PAGAMENTO - DIARIO  ' TO #WC(4) 
  0290 MOVE '//* --------------------------------------------------' TO #WC(5) 
  0300 MOVE '//FITOTECA EXEC AAFAS210,REF=''DIA'',TIPO=''1'''        TO #WC(6) 
  0310 * ----------------------------------------------------------------- *   
  0320 *                         RODANDO O BACKUP                          *   
  0330 * ----------------------------------------------------------------- *   
  0340   COMPUTE #WQTE = 80 * 6                                                
  0350   CALL 'RJE' #WRC #WC(01) #WQTE                                         
  0360   CALL 'GETJOB' #WJOBNUM #WCALLER                                       
  0370 * ----------------------------------------------------------------- *   
  0380 END

Programa - TLMSCL11

Este é o programa que vai submeter um job de backup determinado, por exemplo o DBA Adabas solicitou um backup de um determinado banco agora, só só entrar nesta opção e submeter o job de backup;

                                                                                
 >                                       > +  Program     TLMSCL11 Lib FITOTECA 
 Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0010 *** ---------------------------------------------------------------- ***
   0020 *   FUNCAO: RODAR JOBS SEPARADOS DA FITOTECA;                          *
   0030 *    AUTOR: CLAUDEMAR MARTINS                                          *
   0040 *** ---------------------------------------------------------------- ***
   0050 DEFINE DATA LOCAL                                                       
   0060 1 #ARQ1(A8)                                                             
   0070 1 #DIAD(A1) INIT <' '>                                                  
   0080 END-DEFINE                                                              
   0090 *** ---------------------------------------------------------------- ***
   0100 FORMAT KD=ON                                                            
   0110 SET CONTROL 'U'                                                         
   0120 SET KEY PF3 NAMED 'MENU'                                                
   0130 SET KEY PF1='FIN'                                                       
   0140 REPEAT                                                                  
   0150 *** ---------------------------------------------------------------- ***
   0160 *** INICIO DO MENU - DIGITA O NOME DO BACKUP                         ***
   0170 *** ---------------------------------------------------------------- ***
   0180   RESET #DIAD                                                           
   0190   INPUT (IP=OFF SG=OFF AD=MIL'_')                                       
   0200     02T '-' (78)
   0210     /       02T *USER                                                   
   0220     30T 'JOBS DE BACKUP DA FITOTECA'(I)                                 
   0230     72T *PROGRAM                                                        
   0240     /       02T  *TIME(AL=8)                                            
   0250     11T '-' (60)                                                        
   0260     72T  *DATE                                                          
   0270 * /                                                                     
   0280 /    26T'SUBMETER JOBS DE BACKUPS SEPARADOS'(I) 72T *LIBRARY-ID /       
   0290 * /4T '-' (73)                                                          
   0300 //                                                                      
   0310 ///30T'NOME DO BACKUP'(I) #ARQ1 (AD=MIL'_')                             
   0320 * ////// 30T'TECLE ENTER PARA SAIR' (I)                                 
   0330 *** ---------------------------------------------------------------- ***
   0340 *** EM BRANCO VAMOS VOLTAR PARA O MENU INICIAL                       ***
   0350 *** ---------------------------------------------------------------- ***
   0360 IF #ARQ1 = '        '                                                   
   0370 FETCH 'TLMSMENU'                                                        
   0380 *** ---------------------------------------------------------------- ***
   0390 *** TESTE DO CLAUDEMAR - DUAS LINHAS ABAIXO                          ***
   0400 *** ---------------------------------------------------------------- ***
   0410 IF #ARQ1 EQ 'TESTE'                                                     
   0420   CALLNAT 'TESTE'                                                       
   0430 *** ---------------------------------------------------------------- ***
   0440 IF #ARQ1 EQ 'AACCTLMS'                                                  
   0450   CALLNAT 'AACCTLMS'                                                    
   0460 *** ---------------------------------------------------------------- ***
   0470 *** BACKUP DO BANCO 240                                              ***
   0480 *** ---------------------------------------------------------------- ***
   0490 IF #ARQ1 EQ 'AAFABDIA'                                                  
   0500   CALLNAT 'AAFABDIA'                                                    
   0510 IF #ARQ1 EQ 'AAFABSEM'                                                  
   0520   CALLNAT 'AAFABSEM'                                                    
   0530 IF #ARQ1 EQ 'AAFABSEG'                                                  
   0540   CALLNAT 'AAFABSEG'                                                    
   0550 IF #ARQ1 EQ 'AAFABMES'                                                  
   0560   CALLNAT 'AAFABMES'                                                    
   0570 IF #ARQ1 EQ 'AAFABANO'                                                  
   0580   CALLNAT 'AAFABANO'                                                    
   0590 *** ---------------------------------------------------------------- ***
   0600 *** BACKUP DOS BANCOS SIAFEM                                         ***
   0660 *** ---------------------------------------------------------------- ***
   0670 *** BACKUP AAFASLEG                                                  ***
   0680 *** ---------------------------------------------------------------- ***
   0690 IF #ARQ1 EQ 'AAFASLEG'                                                  
   0700 INPUT NO ERASE 12/20                                                    
   0710    'BACKUP SEMANAL (S), MENSAL (M) OU ANUAL (A)' (I) #DIAD              
   0720 IF #DIAD EQ 'S'                                                         
   0730   CALLNAT 'AAFASLES'                                                    
   0740 IF #DIAD EQ 'M'                                                         
   0750   CALLNAT 'AAFASLEM'                                                    
   0760 IF #DIAD EQ 'A'                                                         
   0770   CALLNAT 'AAFASLEA'                                                    
   0780 RESET #DIAD        
   1920 *** ---------------------------------------------------------------- ***
   1930 *** RODANDO O JOB VAI APARECER UMA MENSAGEM QUE FOI SUBMETIDO        ***
   1940 *** ---------------------------------------------------------------- ***
   1950   INPUT (IP=OFF SG=OFF AD=MIL'_')                                       
   1960     02T '-' (78)                                                        
   1970     /       02T *USER                                                   
   1980     30T 'JOBS DE BACKUP DA FITOTECA'(I)                                 
   1990     72T *PROGRAM                                                        
   2000     /       02T  *TIME(AL=8)                                            
   2010     11T '-' (60)                                                        
   2020     72T  *DATE                                                          
   2030 /    26T'SUBMETER JOBS DE BACKUPS SEPARADOS'(I) 72T *LIBRARY-ID /       
   2040 ///// 31T 'BACKUP SUBMETIDO'(NE)                                        
   2050 *** ---------------------------------------------------------------- ***
   2060 *** VOLTANDO AO MENU INICIAL                                         ***
   2070 *** ---------------------------------------------------------------- ***
   2080 FETCH 'TLMSMENU'                                                        
   2090 END                                            

Espero que tenham curtido essa dica.

0 comentários:

Enviar um comentário