sexta-feira, abril 20, 2018

Programando Natural - 2 Parte

Seguindo com as dicas sobre Natural vou postar um procedimento que fiz para pegar o relatório de ADAREP (que é utilitário que mostra informações sobre um banco de dados Adabas, com informação sobre os files, espaço disponível/usado entre outras informações). Primeiro foi criado um programa Natural para fazer um filtro das informações que eu quero pegar. Observe que tem muitas variaveis criadas, #ASSOR-CYL-TOTAL / #DATAR-CYL-DISPONIVEL mais como é um teste vamos pegar duas imformações do ADAREP - quero somente - id do banco e total de arquivos gravados.
 
>                                       > +  Program     AAFPLAS7 Lib SUPORTE2
 Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
   0010 * -----------------------------------------------------------
   0020 * funcao: Lendo o ADAREP e filtrando algumas informacoes
   0030 * autor : Claudemar Martins
   0040 * criado: 13/10/2015
   0050 * -----------------------------------------------------------
   0060 DEFINE DATA LOCAL
   0070 01 #DATA-BASE-NUMBER     (A133)
   0080 01 REDEFINE #DATA-BASE-NUMBER
   0090    02 #AA-01              (A27)
   0100    02 #AB-02              (A16)
   0110 01 #CAMPO-01              (A27)
   0120 01 #CAMPO-02              (A16)
   0130 01 #FILES-LOADED-TOTAL   (A133)
   0140 01 REDEFINE #FILES-LOADED-TOTAL
   0150    02 #AC-03              (A27)
   0160    02 #AD-04              (A16)
   0170 01 #CAMPO-03              (A27)
   0180 01 #CAMPO-04              (A16)
   0190 01 #ASSOR-CYL-TOTAL      (A133)
   0200 01 #DATAR-CYL-TOTAL      (A133)
   0210 01 #WORKR-CYL-TOTAL      (A133)
   0220 01 #DATAR-CYL-DISPONIVEL (A133)
   0230 01 #ASSOR-CYL-DISPONIVEL (A133)
   0240 01 #ARQUIVO-DATASET      (A133)
   0250 01 REDEFINE #ARQUIVO-DATASET
   0260    02 FILLER                1X
   0270    02 #PROCURO            (A10)
   0280 END-DEFINE
   0290 * -----------------------------------------------------------
   0300 * Gravando o id do banco
   0310 * -----------------------------------------------------------
   0320 READ WORK FILE 1 #DATA-BASE-NUMBER
   0330    MOVE #AA-01 TO #CAMPO-01
   0340    IF #AA-01 EQ SCAN ' Data Base Number        = '
   0350    MOVE #AB-02 TO #CAMPO-02
   0360    ESCAPE TOP
   0370    END-IF
   0380 END-WORK
   0390 * -----------------------------------------------------------
   0400 * Gravando a quantidade de arquivos carregados
   0410 * -----------------------------------------------------------
   0420 READ WORK FILE 1 #FILES-LOADED-TOTAL
   0430    MOVE #AC-03 TO #CAMPO-03
   0440    IF #AC-03 EQ SCAN ' Number of files loaded  = '
   0450    MOVE #AD-04       TO #CAMPO-04
   0460    ESCAPE TOP
   0470    END-IF
   0480 END-WORK
   0490 * -----------------------------------------------------------
   0500 * jogando os dados que peguei
   0510 * -----------------------------------------------------------
   0520 WRITE *DATE *TIME(AL=8) #CAMPO-02 #CAMPO-04
   0530 END
        ....+....1....+....2....+....3....+....4....+....5....+... S 53   L 34
O relatório do ADAREP armazenado em um dataset esta assim:
DSN=AAF.S.TSSUSER4                                      VOL=PRL302 UNIT=1125
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
Data Base Name          = DB.P444.ADABASP1
Data Base Number        =      444
Date Loaded             = 2012-04-01
Time Loaded             = 10:04:52
System Files            =       19,   20
Maximum number of files =     2048
Number of files loaded  =      287
JCL que vai gravar em um dataset o resultado do ADAREP do banco e que depois vai rodar o programa natural que vai pegar duas informações que eu quero nesse dataset
//AAFSNATB JOB (AAFA,DIBD),CLAU,CLASS=S,MSGCLASS=A                             
//*UQ ALLOW                                                                    
//* --------------------------------------------------------                   
//*                 ADAREP DO BANCO DE DADOS                                   
//* --------------------------------------------------------                   
//REP      EXEC AAFAU444,REGION=0M                                             
//DDDRUCK  DD DSN=AAF.S.TSSUSER4,DISP=OLD                                      
//DDCARD   DD *                                                                
ADARUN PROG=ADAREP,DBID=444                                                    
//DDKARTE  DD *                                                                
ADAREP NOFILE                                                                  
/*                       
//* -------------------------------------------------                           
//* Programa que vai fazer o filtro - natural
//* -------------------------------------------------                           
//STEP01   EXEC NATURAL,PARM1='SYS=P2,MT=0,STACK=(LOG SUPORTE2)'                 
//CMWKF01  DD SYSOUT=A                                                          
//CMWKF02  DD SYSOUT=G                                                          
//CMPRT01  DD SYSOUT=G,HOLD=YES                                                 
//SYSIN    DD *                                                                 
AAFPLAS7  
/*
Resultado - Primeiro grava o dia mais a hora (13/10/15 17:41:23) depois pega o ID do banco (240) depois mostra o total de arquivos criados no banco (287)
1Logon accepted to library SUPORTE2.
1NEXT AAFPLAS7
1PAG      1                                                   15-10-13  17:41:21

013/10/15 17:41:23      444              287

1NAT9995 Natural session terminated normally.
UQS0009 - END OF DATA SET.
Como eu já disse este programa natural é um escopo para gravar em um file Adabas as informações dos bancos, para monitorar o espaço utiliza de cada file do banco para poder termos uma estimativa de uso;

0 comentários:

Enviar um comentário