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 ...