XML-INTO avec inbrication

RPG (3 et 4, free), CL, SQL, etc...
Répondre
FabriceF
Messages : 7
Enregistré le : ven. 07 oct. 2011, 09:39:30
Localisation : Lamballe
Contact :

XML-INTO avec inbrication

Message par FabriceF »

Sur cet échantillon d'XML, mon code ne récupére que les enregistrements dont le cycle (NoCyc = 01) et jamais 02, 03 etc

<debut>
<ani>
<ent> bla bla </>
<ref> bla bla </>
<cyc NoCyc = "01">
<sai> bla bla </>
<mba> bla bla </>
<sev> bla bla </>
</cyc>
<cyc NoCyc = "02">
<sai> bla bla </>
<mba> bla bla </>
<sev> bla bla </>
</cyc>
<cyc NoCyc = "03">
<sai> bla bla </>
<mba> bla bla </>
<sev> bla bla </>
</cyc>
</ani>
</debut>

Mon code lançant le XML-INTO utilise une DS comprenant toute la chaine
depuis ANI jusqu'à CYC via des DS imbriquées.

Code : Tout sélectionner

DANIDS            ds                  Qualified            
D NoNat                         30                         
...                      
D ENT                                 likeds&#40;ENTDS&#41;        
D REF                                 likeds&#40;REFDS&#41;      
D CYC                                likeds&#40;CYCDS&#41;        
Est ce bien la bonne méthode ? sachant que la DS CYC est elle même composée de DS ?

Code : Tout sélectionner

DCYCDS            ds                  Qualified           
D NoCyc                          2s 0                     
D SAI                                 likeds&#40;SAIDS&#41;       
D MBA                                likeds&#40;MBADS&#41;       
D SEV                                 likeds&#40;SEVDS&#41;       
[/code]

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

DS à une occurrence

Message par cmasse »

je pense qu'il manque les occurrences à CYC

Code : Tout sélectionner

D CYC                                likeds&#40;CYCDS&#41;    DIM&#40;5&#41;
   
Christian Massé (Volubis.fr)

FabriceF
Messages : 7
Enregistré le : ven. 07 oct. 2011, 09:39:30
Localisation : Lamballe
Contact :

Suite DS à une occurence

Message par FabriceF »

Merci pour votre réponse;

Le souci est de connaître le nombre de CYC =xx que je vais avoir à gérer et donc comment écrire par exemple car pour une balise ANI j'aurais Y cycles.

Code : Tout sélectionner

Cycle = ani&#40;i&#41;.cyc&#40;Y&#41;.NoCyc;
Voici la description de ANI

Code : Tout sélectionner

DANIDS            ds                  Qualified                                                 
D NoNat                         16                                         Numéro national      
D DateNaiss                     10                                         Date de naissance    
D xxx                           1                                         xxx M/F/C/I/H       
D NoOrig                        20                                         Numéro origine       
D Ctg                            5                                         Code type génétique  
D NoNatPere                     16                                         Numéro nat. père     
D CtgPere                        5                                         CTG du père          
D NoNatMere                     16                                         Numéro nat. mère     
D CtgMere                        5                                         CTG de la mère       
D TetinesDB                      2s 0                                      Tétines droites b.   
D TetinesGB                      2s 0                                      Tétines gauches b.   
D Halothane                      3                                         Génotype Halothane   
D StatutRep                      1                                         Statut verrat E/P/C  
D CtgNaiss                       5                                         CTG naissance        
D CtgRep                         5                                         CTG reproducteur     
D FiliaPere                      1                                         Code filiation père  
D FiliaMere                      1                                         Code filiation mère  
D IDE                                 likeds&#40;IDEDS&#41;                                             
D ENT                                 likeds&#40;ENTDS&#41;       
D REF                                 likeds&#40;REFDS&#41;                 
D CYC                                 likeds&#40;CYCDS&#41; dim&#40;5&#41;                                                
et la description de CYC

Code : Tout sélectionner

DCYCDS            ds                  Qualified                 
D NoCyc                          2s 0                           
D SAI                                 likeds&#40;SAIDS&#41;             
D MBA                                 likeds&#40;MBADS&#41;             
D SEV                                 likeds&#40;SEVDS&#41;   

FabriceF
Messages : 7
Enregistré le : ven. 07 oct. 2011, 09:39:30
Localisation : Lamballe
Contact :

(sans texte)

Message par FabriceF »

En fait je souhaiterais savoir comment lire ce type d'imbrication

<COORD>
---<ANI> (de 0 à n occurences)
---<IDE> (de 0 à n occurences)
---<ENT> (de 0 à 1 occurence)
---<REF> (de 0 à 1 occurence)
---<CYC> (de 0 à n occurences)
------<SAI> (de 0 à n occurence)
etc ...

Merci

FabriceF
Messages : 7
Enregistré le : ven. 07 oct. 2011, 09:39:30
Localisation : Lamballe
Contact :

Réponse de k2r400

Message par FabriceF »

Afin que ça puisse servir à d'autres, ci joint la réponse de k2r400 (merci à lui)

Code : Tout sélectionner

     H Option&#40;*NoDebugIO &#58; *SrcStmt &#41;

     D VSIGTTT         DS                  Qualified
     D  VersVsi                       5a
     D  Concepteur                    3a
     D  VersConcept                   2a
     D  TypeEnvoi                     3a
     D  TypeInfo                     10a
     D  Periode                      10a
     D  Module                       10a
     D  DtHrPrepar                   26a
     D  COORD                              LikeDS&#40;COORD&#41;

     D COORD           DS                  Qualified
     D  TypeCoord                     5a
     D  Pays                          2a
     D  Identif                       5a
     D  RaisonSoc                    30a
     D  Adresse1                     50a
     D  CdPostal                      5a
     D  ComLibelle                   50a
     D  Responsable                  30a
     D  ANI                                LikeDS&#40;ANI&#41; Dim&#40;50&#41;
     D   NbrANI                      10i 0
     D  SVP                                LikeDS&#40;SVP&#41; Dim&#40;100&#41;
     D   NbrSVP                      10i 0

     D SVP             DS                  Qualified
     D  PoupCode                     10a
     D  DateSev                      10a
     D  NbSev                         3a
     D  NbAd                          3a
     D  NbRe                          3a
     D  AgeSev                        2a
     D  PdsSev                       10a
     D  NoBande                       5a
     D  DateAd                       10a
     D  AgeAd                         2a

     D ANI             DS                  Qualified
     D  NoNat                        20a
     D  DateNaiss                    10a
     D  xxx                          1a
     D  Ctg                           5a
     D  StatutRep                     1a
     D  ENT                                LikeDS&#40;ENT&#41;
     D  REF                                LikeDS&#40;REF&#41;
     D  CYC                                LikeDS&#40;CYC&#41; Dim&#40;100&#41;
     D   NbrCYC                      10i 0

     D ENT             DS                  Qualified
     D  DateEntrRep                  10a
     D  NoCycleEntr                   2a
     D  DateLivrais                  10a

     D REF             DS                  Qualified
     D  DateRef                      10a
     D  ModeSortie                    1a
     D  StatutGest                    1a
     D  CauseRef                      5a

     D CYC             DS                  Qualified
     D  NoCyc                         2a
     D  SAI                                LikeDS&#40;SAI&#41; Dim&#40;50&#41;
     D   NbrSAI                      10i 0
     D  MBA                                LikeDS&#40;MBA&#41;
     D  SEV                                LikeDS&#40;SEV&#41;

     D SAI             DS                  Qualified
     D  NoSai                         2a
     D  DateSai                      10a
     D  TypeSai                       2a
     D  NoBande                       8a

     D MBA             DS                  Qualified
     D  DateMba                      10a
     D  NbNv                          2a
     D  NbMn                          2a
     D  NbMom                         2a
     D  NoBande                       8a

     D SEV             DS                  Qualified
     D  NoSev                         1a
     D  DateSev                      10a
     D  NbSev                         2a
     D  NbAd                          2a
     D  NbRe                          2a
     D  AgeSev                        2a
     D  PdsSev                       10a
     D  NoBande                       5a
      *--------------------------------------------------------------------
     D XML_Source      S            256a   Varying
     D                                     Inz&#40;'/home/myfile.xml'&#41;

     D wAni            S              5i 0
     D wCYC            S              5i 0
     D wSAI            S              5i 0
      *--------------------------------------------------------------------
      /Free

       XML-INTO VSIGTTT  %XML&#40;XML_Source&#58; 'case=any +
                                           doc=file +
                                           allowmissing=yes +
                                           allowextra=yes +
                                           countprefix=nbr  +
                                           path=VSIGTTT'&#41;;

       dsply VSIGTTT.DtHrPrepar;
       dsply VSIGTTT.COORD.Responsable;
       For wAni = 1 to VSIGTTT.COORD.NbrAni;
          dsply VSIGTTT.COORD.ANI&#40;wAni&#41;.NoNat;
          For wCYC = 1 to VSIGTTT.COORD.ANI&#40;wAni&#41;.NbrCYC;
             For wSAI = 1 to VSIGTTT.COORD.ANI&#40;wAni&#41;.CYC&#40;wCYC&#41;.NbrSAI;
                dsply VSIGTTT.COORD.ANI&#40;wAni&#41;.CYC&#40;wCYC&#41;.SAI&#40;wSAI&#41;.DateSai;
             EndFor;
          EndFor;
       EndFor;

germor
Messages : 75
Enregistré le : lun. 06 juin 2011, 08:01:43

(sans texte)

Message par germor »

Bonjour FabriceF,
J'imagine que depuis ... la solution à été trouvée.
Cependant, en V5R4 Il est possible de se servir d'un Handler au lieu de for...endfor imbriqués.

Code : Tout sélectionner

xml-into %Handler&#40;Procedure &#58; coderetourparexemple&#41;  %xml&#40;chemin &#58; Options&#41; ;

Répondre