terça-feira, outubro 06, 2015

Programando em Natural

Bem este foi um teste que fiz importando dados do gerenciador de cartucho (que não adabas) para dentro de um file Adabas;

Predict

No Predict já temos definidos um file e uma view que vamos gravar essas informações dos cartuchos;
12:59:12             *****  P R E D I C T  4.4.1  *****              2015-10-06
Plan   0                      - Select File -

Cmd  File ID                            Type   Fnr    DDM Impl Other

 __  * AADD-FITOTECA                     A      21     *   A
 __  * AADU-ARQUIVOS                     U      21     *         *













 __ ('.' = EXIT, 'T' = TOP, 'C' = Specify association (     ))
O físico vai estar assim;
>                     > + Fi: AADD-FITOTECA                    L: 1    S: 11
    Ty L Field ID                         F Cs Length   Occ   D U DB S    All
    *- - -------------------------------- *- * -------- ----- * * -- *
       1 AAD-LIBERADO                     A        2,0            AA N
       1 AAD-ARMARIO                      A        2,0            AB N
       1 AAD-SERVICE                      A        3,0            AC N
       1 AAD-CARTUCHO                     A        6,0            AD N
       1 AAD-ARQUIVO                      A       44,0            AE N
       1 AAD-DATA                         A       10,0            AF N
       1 AAD-TIME                         A        8,0            AG N
       1 AAD-SEQUENCIA                    N        3,0            AH N
       1 AAD-CNT                          N        3,0            AI N
       1 AAD-JOB                          A        8,0            AJ N
       1 AAD-USER                         A       15,0            AK N








    -- - -------------------------------- -- - -------- ----- - - -- -
A view vai estar assim;
13:06:51               ***** NATURAL LIST COMMAND *****              06/10/2015
User DBA              - List DDM AADU-ARQUIVOS -           Library NAT2CUR

DDM DBID 0      DDM FNR 21    VSAM Name          Default Sequence     Page   1

T L  DB  Name                             F Leng  S D Remark
- -  --  -------------------------------- - ----  - - ------------------------
*        Generation started
*        at 2015-10-06 12:46:30
*        by user DBA
*
  1  AA  AAD-LIBERADO                     A    2  N
  1  AB  AAD-ARMARIO                      A    2  N
  1  AC  AAD-SERVICE                      A    3  N
  1  AD  AAD-CARTUCHO                     A    6  N
  1  AE  AAD-ARQUIVO                      A   44  N
  1  AF  AAD-DATA                         A   10  N
  1  AG  AAD-TIME                         A    8  N
  1  AH  AAD-SEQUENCIA                    N  3,0  N
  1  AI  AAD-CNT                          N  3,0  N
  1  AJ  AAD-JOB                          A    8  N
  1  AK  AAD-USER                         A   15  N











 End of List.
 Command ===>
 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
       Help  Print Exit  Short       --    -     +     ++                Canc
Tamanho do físico do file 21 quando foi criado;
13:41:56             *****  P R E D I C T  4.4.1  *****              2015-10-06
                        - Modify Adabas attributes -
File ID ......... AADD-FITOTECA                       Added 2015-10-06 at 12:49
Type ............ Adabas, Simple file                    by DBA
Contained in DA . DB.T522.MIGRA (PDBnr: 522)

Required attributes                       Physical distribution type
  Phys. file number ..* 21    implemented   Simple file
  Min ISN ............. 1
  Max ISN ............. 201187

      Device       Cylinder   Blocks      Padding factor  Max 2. alloc
      *-----       ---------- ----------  --------------  ------------
ASSO    8391   UI             146               10
               NI  > 1        350
DATA    8391   DS  > 117      8796              10

Loading attributes                        Loading attributes
  Max recl. ...........                     One AC extent .......... N (Y,N)
  ISN reusage ......... Y (Y,N)             DS reusage ............. Y (Y,N)
  User ISN ............ N (Y,N)             Mixed DS device ........ Y (Y,N)

  Additional attributes ..* N
Programa Natural - Separando os dados

Este programa natural vai fazer um filtro dos dados que eu quero que serão os cartuchos retidos no gerenciador de cartuchos.
>                                       > +  Program     CLAUD001 Lib NAT2CUR
Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
  0010 * -------------------------------------------------------               
  0020 *         FILTRANDO SOMENTE OS CARTUCHOS RETIDOS                          
  0030 * -------------------------------------------------------               
  0040 DEFINE DATA LOCAL                                                       
  0050 01 #ARQ       (A118)                                                    
  0060 01 REDEFINE   #ARQ                                                      
  0070    02 FILLER    2X                                                      
  0080    02 #LIBERADO   (A02)                                                 
  0090    02 FILLER    1X                                                      
  0100    02 #ARMARIO    (A02)                                                 
  0110    02 FILLER    1X                                                      
  0120    02 #SERVICE  (A3)                                                    
  0130    02 FILLER    1X                                                      
  0140    02 #CARTUCHO  (A6)                                                   
  0150    02 FILLER    1X                                                      
  0160    02 #ARQUIVO   (A44)                                                  
  0170    02 FILLER    1X                                                      
  0180    02 #DATA      (A10)                                                  
  0190    02 FILLER      1X                                                    
  0200    02 #TIME      (A8)                                                   
  0210    02 FILLER      1X                                     
  0220    02 #SEQUENCIA (N3)                                    
  0230    02 FILLER      1X                                     
  0240    02 #CNT       (N3)                                    
  0250    02 FILLER      1X                                     
  0260    02 #JOB       (A8)                                    
  0270    02 FILLER      1X                                     
  0280    02 #USER      (A15)                                   
  0290 * -------------------------------------------------------
  0300 01 #ARQ2         (A118)                                  
  0310 01 REDEFINE   #ARQ2                                      
  0320    02 FILLER      2X                                     
  0330    02 #LIBERADO2 (A02)                                   
  0340    02 FILLER      1X                                     
  0350    02 #ARMARIO2   (A02)                                  
  0360    02 FILLER    1X                                       
  0370    02 #SERVICE2 (A3)                                     
  0380    02 FILLER    1X                                       
  0390    02 #CARTUCHO2 (A6)                                    
  0400    02 FILLER    1X                                       
  0410    02 #ARQUIVO2  (A44)                                   
  0420    02 FILLER      1X                                     
  0430    02 #DATA2     (A10)                                   
  0440    02 FILLER      1X                                     
  0450    02 #TIME2     (A8)                                    
  0460    02 FILLER      1X                                     
  0470    02 #SEQUENCIA2 (N3)                                   
  0480    02 FILLER      1X                                     
  0490    02 #CNT2      (N3)                                    
  0500    02 FILLER      1X                                     
  0510    02 #JOB2      (A8)                                    
  0520    02 FILLER      1X                                     
  0530    02 #USER2     (A15)                                   
  0540    END-DEFINE                                            
  0550 * -------- PROCURANDO CARTUCHO RETIDO = NO --------------
  0560    READ WORK FILE 1 #ARQ                                 
  0570    IF   #LIBERADO = 'NO'                                 
  0580 * --------- MOVENDO OS DADOS QUE SELECIONEI -------------
  0590    MOVE #LIBERADO   TO #LIBERADO2                        
  0600    MOVE #ARMARIO    TO #ARMARIO2                         
  0610    MOVE #SERVICE    TO #SERVICE2                          
  0620    MOVE #CARTUCHO   TO #CARTUCHO2                         
  0630    MOVE #ARQUIVO    TO #ARQUIVO2                          
  0640    MOVE #DATA       TO #DATA2                             
  0650    MOVE #TIME       TO #TIME2                             
  0660    MOVE #SEQUENCIA  TO #SEQUENCIA2                        
  0670    MOVE #CNT        TO #CNT2                              
  0680    MOVE #JOB        TO #JOB2                              
  0690    MOVE #USER       TO #USER2                             
  0700 * ----------- FINALIZANDO FECHANDO TUDO QUE ABRI ---------
  0710    WRITE WORK FILE 2 #ARQ2                                
  0720    END-IF                                                 
  0730    END-WORK                                               
  0740    END
Programa Natural - Gravando em um File Adabas

Este programa Natural vai gravar os dados em um file Adabas, o programa de filtro e de carga poderiam ser somente um mais para demonstração ficou interessante;
>                                       > +  Program     CLAUD002 Lib NAT2CUR
Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
  0010 * -------------------------------------------------------------------   
  0020 *  FUNCAO DESTE PROGRAMA: LE O WORK FILE E GRAVA NO DB                  
  0030 * -------------------------------------------------------------------   
  0040 DEFINE DATA LOCAL                                                       
  0050   01 DADOS-GENERICOS VIEW OF AADU-ARQUIVOS                         
  0060    02 AAD-LIBERADO                                                      
  0070    02 AAD-ARMARIO                                                       
  0080    02 AAD-SERVICE                                                       
  0090    02 AAD-CARTUCHO                                                      
  0100    02 AAD-ARQUIVO                                                       
  0110    02 AAD-DATA                                                          
  0120    02 AAD-TIME                                                          
  0130    02 AAD-SEQUENCIA                                                     
  0140    02 AAD-CNT                                                           
  0150    02 AAD-JOB                                                           
  0160    02 AAD-USER                                                          
  0170   01 #DADOS-GENERICOS (A118)                                            
  0180    01 REDEFINE #DADOS-GENERICOS                                         
  0190    02 FILLER      2X                                                    
  0200    02 #LIBERADO   (A02)                                                 
  0210    02 FILLER      1X      
  0220    02 #ARMARIO    (A02)   
  0230    02 FILLER      1X      
  0240    02 #SERVICE    (A3)    
  0250    02 FILLER      1X      
  0260    02 #CARTUCHO   (A6)    
  0270    02 FILLER      1X      
  0280    02 #ARQUIVO    (A44)   
  0290    02 FILLER      1X      
  0300    02 #DATA       (A10)   
  0310    02 FILLER      1X      
  0320    02 #TIME       (A08)   
  0330    02 FILLER         1X   
  0340    02 #SEQUENCIA  (N3)    
  0350    02 FILLER      1X      
  0360    02 #CNT        (N03)   
  0370    02 FILLER      1X      
  0380    02 #JOB        (A08)   
  0390    02 FILLER      1X      
  0400    02 #USER       (A15)   
  0410 * -------------------------------------------------- 
  0420 * ESTATISTICAS                                       
  0430 * -------------------------------------------------- 
  0440 * 01 #I             (N02)                            
  0450 * 01 #II            (N02)                            
  0460 * 01 #TOT-GENERICO  (N06)                            
  0470   END-DEFINE                                         
  0480 *                                                    
  0490 SET KEY PF10='%W<' PF11='%W>'                        
  0500 FORMAT LS=160 PS=60                                  
  0510 * -------------------------------------------------- 
  0520 * GRAVANDO OS DADOS                                  
  0530 * -------------------------------------------------- 
  0540 READ WORK FILE 1 #DADOS-GENERICOS                    
  0550 *                                                    
  0560    AAD-LIBERADO   :=  #LIBERADO                      
  0570    AAD-ARMARIO    :=  #ARMARIO                       
  0580    AAD-SERVICE    :=  #SERVICE                       
  0590    AAD-CARTUCHO   :=  #CARTUCHO                      
  0600    AAD-ARQUIVO    :=  #ARQUIVO                       
  0610    AAD-DATA       :=  #DATA                          
  0620    AAD-TIME       :=  #TIME                          
  0630    AAD-SEQUENCIA  :=  #SEQUENCIA                     
  0640    AAD-CNT        :=  #CNT                           
  0650    AAD-JOB        :=  #JOB                           
  0660    AAD-USER       :=  #USER                          
  0670 * -------------------------------------------------- 
  0680 * AGORA VAMOS MOSTRA/GRAVAR NO BANCO                 
  0690 * -------------------------------------------------- 
  0700   WRITE AAD-LIBERADO     AAD-ARMARIO    AAD-SERVICE  
  0710         AAD-CARTUCHO     AAD-ARQUIVO    AAD-DATA     
  0720         AAD-TIME         AAD-SEQUENCIA  AAD-CNT      
  0730         AAD-JOB          AAD-USER                    
  0740 *                                                    
  0750 *  STORE DADOS-GENERICOS                             
  0760 *  END TRANSACTION                                   
  0770 END-WORK                                             
  0780 END
Programa Natural - Vendo os dados no File Adabas

O programa CLAUD004 faz uma pesquisa no file, no exemplo abaixo quero listar todos os cartuchos que tenham o nome ADABAS.CART;
>                                       > +  Program     CLAUD004 Lib NAT2CUR
Top    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
  0010 DEFINE DATA
  0020      LOCAL
  0030  01 VEIC VIEW OF AADU-ARQUIVOS
  0040    02 AAD-LIBERADO
  0050    02 AAD-ARMARIO
  0060    02 AAD-SERVICE
  0070    02 AAD-CARTUCHO
  0080    02 AAD-ARQUIVO
  0090    02 AAD-DATA
  0100    02 AAD-TIME
  0110    02 AAD-SEQUENCIA
  0120    02 AAD-CNT
  0130    02 AAD-JOB
  0140    02 AAD-USER
  0150  END-DEFINE
  0160  FORMAT LS=160 PS=60
  0170  READ VEIC WITH REPOSITION BY AAD-ARQUIVO = 'ADABAS.CART'
  0180  DISPLAY AAD-CARTUCHO AAD-ARQUIVO AAD-DATA AAD-JOB
  0190        IF AAD-ARQUIVO = 'ADABAS.CART'
  0200          ESCAPE TOP REPOSITION
  0210        END-IF
  0220     END-READ
  0230 END
       ....+....1....+....2....+....3....+....4....+....5....+... S 23   L 4
Pegando os Dados

Este JCL vamos pegar os dados sobre os cartuchos;
MEMBER=T%T      000031 REC SAVE:27.08.2009 17:14 BY   USERID DBA  R=00000001
DSN=DBA.PRODUCAO.ADABAS                        LIB=PB VOL=PRL305 UNIT=1004    
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFSNATB JOB (AAF,TSS),'CLAUD',CLASS=S,MSGCLASS=A
//*UQ ALLOW
//* ---------------------------------------------------------------
//*             INVENTARIO DOS CARTUCHOS - &&TEMP
//* ---------------------------------------------------------------
//ALOCLIB EXEC CATRPTS
//SYSPRINT DD DSN=&&TEMP01,DISP=(NEW,PASS),SPACE=(CYL,150),
//            UNIT=SYSDA,DCB=(LRECL=133,BLKSIZE=1330,RECFM=FBA)
//TLMSRPTS.BKUP DD  DUMMY
//SYSIN   DD *
TLMS018,DSN,SCRATCH,LOC,SERVICE,VSN,CDATE,CTIME,VOLSEQ,VOLCNT,CJOB,USER
//* ---------------------------------------------------------------
//*                  FAZENDO O FILTRO DOS DADOS
//* ---------------------------------------------------------------
//NATD EXEC NATURAL,PARM1='SYS=T,MT=0'
//CMWKF01  DD DSN=&&TEMP01,DISP=SHR
//CMWKF02  DD DSN=&&TEMP02,DISP=(NEW,PASS),SPACE=(CYL,150),
//            UNIT=SYSDA,DCB=(LRECL=133,BLKSIZE=1330,RECFM=FBA)
//CMPRT01  DD SYSOUT=G,HOLD=YES
//SYSIN    DD *
CLAUD001
//* ---------------------------------------------------------------
//*            LIMPANDO O FILE 21 DO BANCO 522
//* ---------------------------------------------------------------
//ADADBS   EXEC AAFAU522
//DDCARD   DD *
ADARUN PROG=ADADBS,DBID=522
//DDKARTE  DD *
ADADBS     REFRESH FILE=21
//* ---------------------------------------------------------------
//*        GRAVANDO OS DADOS DO DATASET NO FILE 21
//* ---------------------------------------------------------------
//NATURAL  EXEC NATURAL,PARM1='SYS=T,MT=0,STACK=(LOG NAT2CUR)'
//CMWKF01  DD DSN=&&TEMP02,DISP=SHR
//CMWKF02  DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSIN    DD *
CLAUD002
/*
Checando se Gravou no Banco - pelo SYSAOS dá para ver que o file que estava com nenhum registros agora esta com 4345 registros
  13:50:07          ***** A D A B A S  BASIC  SERVICES *****       2015-10-06
  DBID 522                    - Display File Layout -                 PDRF012
   ****************
   *  File 21     *   AADD-FITOTECA
   ****************

   Records loaded ..... 4345          Date loaded .......... 2015-10-06 13:42:14
   TOP ISN ............ 4345          Date of last update .. 2015-10-06 13:44:37
   Max ISN expected ... 201187        Max Compr Rec Lngth .. 10792
   Minimum ISN ........ 1             Asso/Data Padding .... 10%/10%
   Size of ISN ........ 3 Bytes       Highest Index Level .. 3
   Number of Updates .. 4713
   ISN Reusage ........ YES           USERISN .............. NO
   Space Reusage ...... YES           MIXDSDEV ............. YES
   ADAM File .......... NO            PGMREFRESH ........... NO
   Ciphered File ...... NO            NOACEXTENSION ........ NO
   Coupled Files ...... NONE
   Blk per DS Extent .. 0
   Blk per UI Extent .. 0
   Blk per NI Extent .. 0             Length of Owner ID ... 0

  PF1----- PF2------ PF3------ PF4------ PF6----- PF7----- PF8----- PF12-----
  Help               Exit      Refresh                              Menu
Vamos editar o programa CLAUD004 e colocar um label de um cartucho para checar - vamos pesquisar abaixo os cartuchos ADABAS.CART
>                                       > +  Program     CLAUD004 Lib NAT2CUR 
Bot    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
 0150  END-DEFINE
 0160  FORMAT LS=160 PS=60
 0170  READ VEIC WITH REPOSITION BY AAD-ARQUIVO = 'ADABAS.CART'
 0180  DISPLAY AAD-CARTUCHO AAD-ARQUIVO AAD-DATA AAD-JOB
 0190        IF AAD-ARQUIVO = 'ADABAS.CART'
 0200          ESCAPE TOP REPOSITION
 0210        END-IF
 0220     END-READ
 0230 END
Esta aqui os dados de todos os cartuchos ADABAS.CART
 VVVV
 PAG      1

 AAD-CARTUCHO                 AAD-ARQUIVO                   AAD-DATA  AAD-JOB
 ------------ -------------------------------------------- ---------- --------

 CL0232       ADABAS.CART.DB421.PLOG.G0189V00                 23/10/2011 AAFAP421
 CL1106       ADABAS.CART.DB421.PLOG.G0190V00                 29/10/2011 AAFAP421
 CL0988       ADABAS.CART.DB421.PLOG.G0191V00                 05/11/2011 AAFAP421
 CL1108       ADABAS.CART.DB421.PLOG.G0192V00                 06/11/2011 AAFAP421
 CL0117       ADABAS.CART.DB421.PLOG.G0193V00                 20/11/2011 AAFAP421
 CL0100       ADABAS.CART.DB421.PLOG.G0194V00                 20/11/2011 AAFAP421
 CL0743       ADABAS.CART.DB421.PLOG.G0195V00                 26/11/2011 AAFAP421
 CL0831       ADABAS.CART.DB421.PLOG.G0196V00                 03/12/2011 AAFAP421
 CL0289       ADABAS.CART.DB421.PLOG.G0197V00                 04/12/2011 AAFAP421
 CL1042       ADABAS.CART.DB421.PLOG.G0198V00                 10/12/2011 AAFAP421
 CL0210       ADABAS.CART.DB421.PLOG.G0199V00                 17/12/2011 AAFAP421
 CL0346       ADABAS.CART.DB421.PLOG.G0200V00                 24/12/2011 AAFAP421
 CL0698       ADABAS.CART.DB421.PLOG.G0201V00                 31/12/2011 AAFAP421
 CL0507       ADABAS.CART.DB421.PLOG.G0202V00                 01/01/2012 AAFAP421
 CL0452       ADABAS.CART.DB421.PLOG.G0203V00                 09/01/2012 AAFAP421
 CL0811       ADABAS.CART.DB421.PLOG.G0204V00                 18/01/2012 AAFAP421
 CL0394       ADABAS.CART.DB421.PLOG.G0205V00                 22/01/2012 AAFAP421
 CL0373       ADABAS.CART.DB421.PLOG.G0206V00                 26/01/2012 AAFAP421
 CL0685       ADABAS.CART.DB421.PLOG.G0207V00                 30/01/2012 AAFAP421
 CL0413       ADABAS.CART.DB421.PLOG.G0208V00                 05/02/2012 AAFAP421
 CL0940       ADABAS.CART.DB421.PLOG.G0209V00                 20/02/2012 AAFAP421
 CL1116       ADABAS.CART.DB421.PLOG.G0210V00                 25/02/2012 AAFAP421
 CL0391       ADABAS.CART.DB421.PLOG.G0211V00                 04/03/2012 AAFAP421
 CL0409       ADABAS.CART.DB421.PLOG.G0212V00                 08/03/2012 AAFAP421
 CL0601       ADABAS.CART.DB400.CLOG.G0047V00                 22/03/2012 AAFAC400
 BK0049       ADABAS.CART.DB400.PLOG.G0256V00                 28/06/2013 AAFAP040
 BK1069       ADABAS.CART.DB400.PLOG.G0294V00                 11/01/2015 AAFAP040
 BK0467       ADABAS.CART.DB400.PLOG.G0295V00                 01/02/2015 AAFAP040
 BK0725       ADABAS.CART.DB400.PLOG.G0296V00                 21/02/2015 AAFAP040
 BK1171       ADABAS.CART.DB400.PLOG.G0297V00                 01/03/2015 AAFAP040
 BK0436       ADABAS.CART.DB400.PLOG.G0298V00                 05/04/2015 AAFAP040
 BK1281       ADABAS.CART.DB400.PLOG.G0299V00                 03/05/2015 AAFAP040
 BK1241       ADABAS.CART.DB400.PLOG.G0300V00                 31/05/2015 AAFAP040
 BK1329       ADABAS.CART.DB400.PLOG.G0301V00                 05/07/2015 AAFAP040
 BK1401       ADABAS.CART.DB400.PLOG.G0302V00                 02/08/2015 AAFAP040
 BK0869       ADABAS.CART.DB400.PLOG.G0303V00                 04/08/2015 AAFAP040
 BK1244       ADABAS.CART.DB500.CLOG.G0113V00                 31/05/2015 AAFAC500
 BK1338       ADABAS.CART.DB500.CLOG.G0114V00                 05/07/2015 AAFAC500
 BK1403       ADABAS.CART.DB500.CLOG.G0115V00                 02/08/2015 AAFAC500
 BK0783       ADABAS.CART.DB500.CLOG.G0116V00                 04/08/2015 AAFAC500
 BK0651       ADABAS.CART.DB500.PLOG.G0224V00                 15/02/2014 AAFAP500

0 comentários:

Enviar um comentário