30 octobre 2012

Chargement du PRDB par HOST TABLES sous HRv9

Avec HRv9 le programme BEB utilise des HOST TABLES pour charger les tables du PRDB par paquet de 100 à 500 lignes (ce fonctionnement est rétro-portable sous HRv7 via un "kit" éditeur - c'est alors un programme BFB qui remplace le BEB HRv7).

Le principe des HOST TABLES est décrit dans la documentation ORACLE. Je vois en revanche peu de possibilité pour utiliser cette fonctionnalité avec HR Access - car la plupart des mises à jour sont réalisées via les opérateurs de mouvement.

  • Exemple de déclaration de tableau (extrait de BEB / BFB) :

 01 HTB-CLZX0F PIC S9(4)                    COMP.                
 01 HTB-CLZX0F-MAX VALUE 0100  PIC S9(4)    COMP.                
 01 HTB-ZX0F.                                                    
  02 HTB-ZX0F-NUDOSS OCCURS  0100 PIC S9(9) COMP.                
  02 HTB-ZX0F-SOCDOS OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-PGPDOS OCCURS  0100 PIC S9(9) COMP.                
  02 HTB-ZX0F-NULIGN OCCURS  0100 PIC S9(08) PACKED-DECIMAL.     
  02 HTB-ZX0F-CODLAN OCCURS  0100 PIC X(002).                    
  02 HTB-ZX0F-TYPADD OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-MODTAD OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-REPTAD OCCURS  0100 PIC X(003).                    
  02 HTB-ZX0F-LIBTAD OCCURS  0100 PIC X(045).                    
  02 HTB-ZX0F-DATDEB OCCURS  0100 PIC X(10).                     
  02 HTB-ZX0F-DATFIN OCCURS  0100 PIC X(10).                     
  02 HTB-ZX0F-TEMADD OCCURS  0100 PIC X(001).                     


  • Exemple d'alimentation du tableau :

 F9YDGZX0F.  IF    A-CDSTDO = "ZX"                               
           AND   A-CDSEGI = "0F"                                 
           NEXT SENTENCE ELSE GO TO F9YDGZX0F-FN.                
    ADD   +1  TO  HTB-CLZX0F.                                    
        MOVE  H-NUDOSS TO      HTB-ZX0F-NUDOSS    (HTB-CLZX0F).  
        MOVE  H-SOCDOS TO      HTB-ZX0F-SOCDOS    (HTB-CLZX0F).  
        MOVE  H-PGPDOS TO      HTB-ZX0F-PGPDOS    (HTB-CLZX0F).  
        MOVE  H-NULIGN TO      HTB-ZX0F-NULIGN    (HTB-CLZX0F).  
        MOVE  A-ZX0F-CODLAN  TO                                  
              HTB-ZX0F-CODLAN(HTB-CLZX0F).                       
        MOVE  A-ZX0F-TYPADD  TO                                  
              HTB-ZX0F-TYPADD(HTB-CLZX0F).                        

...

  • Exemple d'insertion en base :

          IF  S-CDSTDO = "ZX" AND S-CDSEGI = "0F"                
         AND HTB-CLZX0F > ZERO                                   
 

         EXEC SQL FOR :HTB-CLZX0F                                
                   INSERT INTO          ZX0F                     
        (NUDOSS, SOCDOS, PGPDOS, NULIGN, CODLAN, TYPADD,         
          MODTAD, REPTAD, LIBTAD,                                
              DATDEB                                    ,        
              DATFIN                                    ,        
          TEMADD, MODPAY, CDPAYS, REPPAY, LIBPAY, CDPOST,        
          ZONADA, ZONADB, ZONADC, ZONADD, ZONADE, ZONADF,        
          ZONADG, ZONADH, ZONADI, ZONADJ, IDGPRG, SOCCLE,        
          MATRIC, NUDOSP, IDSITU, PERPAI, USAGEP, NUMTRT,        
          NUMBUL,                                                
              TIMEST                                    )        
          VALUES                                                 
          (                                                      
          :HTB-ZX0F-NUDOSS     ,                                 
          :HTB-ZX0F-SOCDOS     ,                                 
          :HTB-ZX0F-PGPDOS     ,                                 
          :HTB-ZX0F-NULIGN     ,                                 
          :HTB-ZX0F-CODLAN     ,                                 
...                                                                 
          :HTB-ZX0F-IDSITU     ,                                 
          :HTB-ZX0F-PERPAI     ,                                 
          :HTB-ZX0F-USAGEP     ,                                 
          :HTB-ZX0F-NUMTRT     ,                                 
          :HTB-ZX0F-NUMBUL     ,                                 
          :HTB-ZX0F-TIMEST                                       
          )                                                      
          END-EXEC                                                



Le nombre d’occurrences traité par paquet est paramétrable via le fichier $PARM/TYBPPRBZ. Ici par exemple on charge par défaut par paquet de 100 lignes - mais par 500 pour ZX5C et ZX8K :
PB17*HZX  0100
PB17*HZX5C0500
PB17*HZX8K0500


Dans RBZ et ROA on trouve la prise en compte de ce fichier :
#RADICAUX
echo "PB17RDFD01TO_DATE(" > $PB
echo "PB17RDFD02)" >> $PB
echo "PB17RDFD03TO_CHAR(" >> $PB
echo "PB17RDFD04,'YYYY-MM-DD'" >> $PB
echo "PB17RDFD05 " >> $PB
echo "PB17RDFD06 " >> $PB
echo "PB17RDFD07 " >> $PB
echo "PB17RDFD08 " >> $PB
if [ -s $PARM/TYBPPRBZ   ] ; then
cat $PARM/TYBPPRBZ >> $PB
fi


Bizarrement ce fichier TYBPPRBZ est livré avec le kit HRv7 mais pas dans la HRv9 standard ...

1 commentaire:

  1. En fait sous HRv9 les nombres d'occurrence sont saisissables dans l'objet "Plate-Forme Physique", onglet "Radicaux et paramètres des tables d'informations". Après mise à jour, regénérez par RBZ le programme BEB (ou BFB).

    RépondreSupprimer