Data area en RPG/400

BoTTom |    Changer de couleur
 
 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


|    Changer de couleur
 
 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.


|    Changer de couleur
 
  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


|    Changer de couleur
 
 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)
 
 
 
 
 
 
 
 


|    Changer de couleur
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





©AF400