Il est possible de manipuler des data aréa en RPG. Il faut déclarer la data aréa : Soit à l'aide d'une DATA STRUCTURE particulère FMT DS IDsname....NODsExt-file++.............OccrLen+..................... Inomda UDS ^ ^ ^-- DS ==> vous devez définir les sous zones. ! ! ! !- U=déclaration d'une data aréa,lue et verrouillée ! en début de pgm, mise à jour en fin de pgm. ! !- Nom de la data aréa (recherchée dans *LIBL, si non trouvée elle est crée dans QTEMP) ou BLANC = *LDA. Soit à l'aide du code opération DEFN FMT C CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments+++++ C *NAMVAR DEFN nomda déclaration d'une D.A -^ ^-- peut être nom de DS |
Si le nom de la data aréa dépasse 6 car. vous indiquerez le nom "externe" en facteur2 (*LDA autorisé) et le nom RPG en zone résultat. Vous pouvez alors manipuler la data aréa en cours de pgm (logique libre) Lecture: FMT C CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments+++++ (*LOCK) IN nomda xx IN lit une data aréa précédement déclarée avec *NAMVAR DEFN Si facteur1 est à blanc la D.A est lue sans verrouillage sans mise à jour possible Si facteur1 contient *LOCK la D.A est lue (dans un but de m à j) - si elle n'est pas verrouillée par un autre pgm. - elle est verrouillée par votre pgm à la lecture jusqu'à: + Mise à jour (OUT) + libération (UNLCK) Si un indicateur (xx) est spécifié il est mis ON en cas de prb. |
Mise à jour FMT C CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments+++++ (*LOCK) OUT nomda xx OUT met à jour une data aréa précédement lue avec IN Si facteur1 est à blanc la D.A est mise à jour et déverrouillée Si facteur1 contient *LOCK la D.A est mise à jour et reste verrouillée jusqu'à + libération (UNLCK) Si un indicateur (xx) est spécifié il est mis ON en cas de prb. Libération FMT C CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments+++++ UNLCKnomda UNLCK libère (déverrouille) une data aréa précédement verrouillée s'il n'y a pas de verrouillage aucune erreur n'est signalée |
Vous pouvez déclarer plusieurs Data Aréa dans un même programme. Pour tous ces codes opération, vous pouvez indiquer en facteur2 *NAMVAR qui signifie "toutes las D.A déclarées par *NAMVAR DEFN". Vous pouvez combinier les deux méthodes de lecture (implicite et explicite) Il faut alors utiliser les deux formes de déclaration (UDS + *NAMVAR DEFN) La définition de la zone résultat ou de la data structure associée doit correspondre à la définition de la data aréa. (lg et type) |
Exemples: FMT DS IDsname....NODsExt-file++.............OccrLen+..................... I UDS 1 10 CODE *LDA lue en début de pgm, récrite en fin de pgm FMT DS IDsname....NODsExt-file++.............OccrLen+..................... ITOTAL UDS 1 72MT 8 80CTVA 9 122TXTVA Data Aréa TOTAL lue en début de pgm, réecrite en fin de pgm FMT C CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments+++++ *NAMVAR DEFN DANOCDE NOCDE 60 *LOCK IN NOCDE 50 *IN50 IFEQ *ON ... (en cours d'utilisation) ELSE ADD 1 NOCDE Data aréa DANOCDE utilisée pour OUT NOCDE la numérotation auto des cdes. ENDIF |