Data structures en RPG et constantes

BoTTom |    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
                             
 
   Les structures de données permettent: 
 
          - de redéfinir une zone de votre programme 
 
               soit en subdivisant une zone de votre programme 
 
               soit en regroupant plusieurs zones de votre programme 
 
 
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  REDEFINITION D'UNE ZONE DE VOTRE PROGRAMME 
 
     Supposons une zone NOART qui contient le numéro 
     d'un article. 
 
     Cette zone est composée de plusieurs informations 
     formant un numéro d'article. 
 
     Regardons cette décomposition. 
 
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  REDEFINITION D'UNE ZONE DE VOTRE PROGRAMME 
 
     Supposons une zone NOART qui contient le numéro 
     d'un article. 
 
     Cette zone est composée de plusieurs informations 
     formant un numéro d'article. 
 
     Regardons cette décomposition. 
 
                              ! MODEL ! FABRI ! COULEUR ! TAILLE ! 
                               1     4 5    10 11     13 14     16 
 
 
 
 
 
 
 
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  REDEFINITION D'UNE ZONE DE VOTRE PROGRAMME 
 
     Supposons une zone NOART qui contient le numéro 
     d'un article. 
 
     Cette zone est composée de plusieurs informations 
     formant un numéro d'article. 
 
     Regardons cette décomposition. 
 
                              ! MODEL ! FABRI ! COULEUR ! TAILLE ! 
                               1     4 5    10 11     13 14     16 
 
     Cette décomposition est assez courante dans les 
     entreprises. Elle permet en ne connaissant que 
     le numéro d'un article d'avoir des informations 
     sur cet article. 
 
 
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  REDEFINITION D'UNE ZONE DE VOTRE PROGRAMME 
 
     Supposons une zone NOART qui contient le numéro 
     d'un article. 
 
     Cette zone est composée de plusieurs informations 
     formant un numéro d'article. 
 
     Regardons cette décomposition. 
 
                              ! MODEL ! FABRI ! COULEUR ! TAILLE ! 
                               1     4 5    10 11     13 14     16 
 
     Nous voulons dans notre programme utiliser ces 
     sous-zones individuellement tout en restant en 
     description externe. 
 
     Il va falloir pour cela décomposer la zone NOART 
     ce que nous ferons grâce à une DS (Data Structure) 
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  REDEFINITION D'UNE ZONE DE VOTRE PROGRAMME 
 
     Supposons une zone NOART qui contient le numéro 
     d'un article. 
 
     Cette zone est composée de plusieurs informations 
     formant un numéro d'article. 
 
     Regardons cette décomposition. 
 
                              ! MODEL ! FABRI ! COULEUR ! TAILLE ! 
                               1     4 5    10 11     13 14     16 
     Voici cette définition:
 
     INOART       DS
     I                                        1   4 MODEL
     I                                        5  10 FABRI
     I                                       11  13 COULEU
     I                                       14  160TAILLE   <-- numérique
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  REDEFINITION DE PLUSIEURS ZONES EN UNE SEULE.
 
     Supposons trois zones jour,mois,année
 
     Que vous voulez "voir" comme une seule
     (DATE sous forme AAMMJJ)
 
     Voici cette définition:
 
     IDATDS       DS                                      (format SEU DS)
     I                                        1   20AN
     I                                        3   40MOIS  (  "     "  SS)
     I                                        5   60JOUR
     I                                        1   60DATE     <-- numérique
 
     Nous sommes ici obligés de définir DATE en tant que sous-zone
      pour pouvoir la considérer comme numérique.
 
     UNE DATA STRUCTURE (ici DATDS) étant toujours vue comme ALPHA.
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  Une sous-zone de data structure peut être un tableau
    (il faut alors indiquer le nombre de décimales d'UN POSTE, si numérique)
 
  Ne  peut pas être un élément de tableau 
 
  La liste des sous-zones peut être générée par le compilateur
 
     Il faut créer un fichier physique servant de modèle (ici FNOARTP1)
 
                R FNOARTF1                  TEXT('FICHIER MODELE N°article')
                  MODEL          4
                  FABRI          6
                  COULEU         3
                  TAILLE         3S 0
 
  Puis définir la DS en tant que DS EXTERNE
 
     IDsname....NODsExt-file++.............OccrLen+.....................
     INOART     E DSFNOARTP1
            E --^   ^------^-- nom du fichier modèle (si blanc DS=nom PF)


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 
  IL EST POSSIBLE D'INITIALISER LES SOUS-ZONES D'UNE DS.
 
     Cette initialisation se fera suivant le type de chaque sous-zone
 
     Elle peut être complète (toutes les sous-zones)
 
     IDATDS      IDS
                 ^------col 18
     Elle peut être partielle , il faut alors spécifier la valeur initiale
                                                           (format SEU SV)
     IDATDS       DS
     I I            93                        1   20AN
     I                                        3   40MOIS
     I I            01                        5   60JOUR
     I ^            ^-----------------------^ 1   60DATE 
     ^ 8            21 à 42
     !
     6
 
 


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 Les spécifs I permettent aussi de déclarer des constantes nominatives
 
Il s'agit de constantes longues (ou utilisées plusieurs fois)
 
    Déclarées en spécif I avec un nom associé.
 
    Ne pouvant être utilisées qu'en facteur 2.
 
 
   I                'voici ma constante'     C      CT1    (format SEU N)
   ^                ^-----------------------^^       ^
   6                21-42                    !       !-- nom de la constante
                                             !
                                             col 43 = 'C'
 
   I                'voici une constante bie-C      CT1
   I                'n trop longue pour teni-
   I                'r sur une seule ligne.'
 
 Utilisation:              CodopF2++++++++ZR++++
                           MOVE CT1       MSG


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 Il existe des data structures particulières en RPG/400 qui sont
  les data structures à OCCURENCES MULTIPLES.
 
 C'est-à-dire que la data structure va se trouver plusieurs fois en mémoire
  et ce de manière contiguë (un peu comme un tableau, chaque élément du
  tableau étant représenté par toutes les sous-zones de la data structure)
 
 Exemple:
 
 Pour des statistiques mensuelles, nous avons besoin de:
 
    CA du mois, nbr de contrats, Mt moyen par contrat.
 
     ISTATDS      DS
     I                                        1  132CAMENS
     I                                       14  200NBCTR
     I                                       21  272MTMOY
 
 Puis nous allons indiquer que cette DS doit exister en 12 EXEMPLAIRES
     IDsname....NODsExt-file++.............OccrLen+.....................
     ISTATDS      DS                          12  


|    Changer de couleur
                      S T R U C T U R E   D E   D O N N E E S 
 Maintenant pour manipuler cette DS il faut d'abord se positionner sur
  une occurence.
 
Cela se fait avec OCUR.
 
FMT C        CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments+++++
                         (num)     OCUR DS        ZR
                         (DSref)
 
          - facteur1 peut contenir +un chiffre (constante ou variable)
              représentant l'occurence sur laquelle il faut se positionner)
 
                                   +une DS à occurences multiples indiquant
                                    qu'il faut se positionner sur la même
                                    occurence que DSref.
 
                                   +'blanc',OCUR est alors utilisé pour pla-
                                     cer le n° d'occurence actuel dans ZR
 
          - ZR reçoit le numéro de l'occurence après positionnement.
 


|    Changer de couleur
 dans notre exemple: 
FMT C        CL0N01N02N03Factor1+++OpcdeFactor2+++ResultLenDHHiLoEqComments+++++
                         MOIS      OCUR STATDS
                                   ADD  MTFAC     CAMENS
                                   ADD  1         NBCTR
 
 et en fin de pgm:
                         1         DO   12        WMOIS   20
                         WMOIS     OCUR STATDS
                         CAMENS    DIV  NBCTR     MTMOY     H
                                   ENDDO
 
Imaginons maintenant les mêmes besoins avec en plus un montant par région
 (20 régions possibles) pour chaque mois.
Il faut définir un tableau en tant que sous-zone de la DS à occurences.
     E                    MTR        20  7 2
 puis : 
     ISTATDS      DS                         12
     I                                        1  132CAMENS
     I                                       14  200NBCTR
     I                                       21  272MTMOY
     I                                       28 1672MTR     <---   





©AF400