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