[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2008
    Beiträge
    66

    Question XML - Tabellen in Tabellen *RNF5343 Feldgruppe LINE hat zu viele übergangene Indizes.

    Hallo,


    Ich habe im XML Tabellen in Tabellen
    Innerhalb mehrere Artikel und es gibt jeweils mehrere Optionen dazu .


    Ich habe brav und fleißig die Datenstrukturen definiert.


    Leider bekomme ich Umwandlungsfehler.
    Z.B. wenn ich den Index zum Auslesen definieren will.
    *RNF5343 30 120 007900 Feldgruppe LINE hat zu viele übergangene Indizes.
    LocInd = Orders.Head.Cnt_Line;
    LocInd2 = Orders.Head.Cnt_Nad;
    LocInd3 = Orders.Head.Line.Cnt_Opt;




    0001.00 ctl-opt dftactgrp(*no);
    0002.00 dcl-f order02pf usage(*output);
    0003.00 dcl-f order03pf usage(*output);
    0004.00 // Root .................................................. ......
    0005.00 dcl-ds Orders qualified;
    0006.00 Head likeds(Head);
    0007.00 end-ds;
    0008.00 // Template Head.............................................. ..
    0009.00 dcl-ds Head template qualified;
    0010.00 VersionNumber likeds(VersionNumber);
    0011.00 TechnicalReceiver char(20);
    0012.00 TechnicalSender char(20);
    0013.00 OrderNumber char(20);
    0014.00 Nad likeds(Nad) dim(04);
    0015.00 Cnt_Nad int(10);
    0016.00 Line likeds(Line) dim(10);
    0017.00 Cnt_Line int(10);
    0018.00 end-ds;
    0019.00 dcl-ds VersionNumber template qualified;
    0020.00 VersionName char(20);
    0021.00 VersionNo char(20);
    0022.00 end-ds;
    0023.00 // Template Nad............................................... ..
    0024.00 dcl-ds Nad template qualified;
    0025.00 FlagOfParty char(02);
    0026.00 AdressGLN char(20);
    0027.00 end-ds;
    0028.00 // Template Line.............................................. ..
    0029.00 dcl-ds Line template qualified;
    0030.00 LineItemNumber char(03);
    0031.00 ProductNumber char(10);
    0032.00 Opt likeds(Opt) dim(10);
    0033.00 Cnt_Opt int(10);
    0034.00 end-ds;
    0035.00 // Template Opt............................................... ..
    0036.00 dcl-ds Opt template qualified;
    0037.00 FeatureLineNumber char(01);
    0038.00 FeatureNumber char(01);
    0039.00 FeatureDescription char(20);
    0040.00 OptionNumber char(01);
    0041.00 OptionDescription char(20);
    0042.00 end-ds;


    *RNF5343 30 120 007900 Feldgruppe LINE hat zu viele übergangene Indizes.

    Grüsse F D H Franco

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.556
    Du solltest Deine Referenz-Datenstrukturen anders benennen als die endgültigen Felder, die mit LIKEDS auf die Referenz-Struktur verweisen. Könnte zu Problemen führen.

    Außerdem wenn ich mir die Fehlermeldung anschaue, scheint das kein Problem von der Definition, sondern der Verarbeitung zu sein, also was ist in Zeile 79?

    Birgitta
    Birgitta Hauser

    Contractor for Fresche Solutions Inc.
    Anwendungsmodernisierung, Beratung, Schulungen im Bereich RPG, SQL und Datenbank

  3. #3
    Registriert seit
    Aug 2014
    Beiträge
    147
    Hallo Franco,

    Das Element Cnt_Opt erreichst Du über folgendes Statement, da es sich innerhalb der Schleife Line befindet

    PHP-Code:
     for LocInd 1 to Orders.Head.Cnt_Line;    // Loop Produkte
        
    ItemNumber    Orders.Head.Line(LocInd).LineItemNumber;
        
    ProductNumber Orders.Head.Line(LocInd).ProductNumber;
        for 
    LocInd3 1 to Orders.Head.Line(LocInd).Cnt_Opt;
          
    FeatureDescription =
           
    Orders.Head.Line(LocInd).Opt(LocInd3).FeatureDescription;
        endfor;
      endfor; 
    Habt Ihr Interesse coole Webanwendungen auf IBM i zu programmieren?
    - Responsive Webdesign für PC, iPad und Smartphone
    http://www.myhofi.com/dev/html/DataViewResponsive.html
    - Stammdaten verwalten http://www.myhofi.com/tms/HTML/MySubfileApp04.html
    - Projektverwaltung mit Gantt http://www.myhofi.com/tms/HTML/MyGantt.html
    - schnelle Volltextsuche http://www.myhofi.com/music/html/musicsearch.html

    Hier gibts die Workshops https://www.toolmaker.de/schulungen/

    Herzliche Grüße
    Rainer Ross It-Beratung

  4. #4
    Registriert seit
    Jul 2008
    Beiträge
    66
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Du solltest Deine Referenz-Datenstrukturen anders benennen als die endgültigen Felder, die mit LIKEDS auf die Referenz-Struktur verweisen. Könnte zu Problemen führen.

    Außerdem wenn ich mir die Fehlermeldung anschaue, scheint das kein Problem von der Definition, sondern der Verarbeitung zu sein, also was ist in Zeile 79?

    Birgitta
    Hallo Birgitta,

    0079.00 LocInd3 = Orders.Head.Line.Cnt_Opt;

    Die Index definition mag der Compiler nicht.

    Gruß Franco

  5. #5
    Registriert seit
    Jul 2008
    Beiträge
    66
    Hallo Rainer,

    Danke.
    Der Compiler nervt aber schon bei der Definition des Index.
    0079.00 LocInd3 = Orders.Head.Line.Cnt_Opt;
    Habe auch Birgitta schon gefragt ....

    Gruß Franco

  6. #6
    Registriert seit
    Aug 2014
    Beiträge
    147
    Hallo Franco,

    so sollte es gehen

    PHP-Code:
             ctl-opt dftactgrp(*no);
          
    //------------------------------------------------------------------//
          //                                                                  //
          //  Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN           //
          //                                                                  //
          //-----------------                                                 //
          // R.Ross 11.2019 *                                                 //
          //------------------------------------------------------------------//
          // XML-Array - Root                                                 //
          //------------------------------------------------------------------//

             
    dcl-ds  Orders                qualified;
                      
    Head                 likeds(Head);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Template Head                                                    //
          //------------------------------------------------------------------//

             
    dcl-ds  Head                  template qualified;
                      
    VersionNumber        likeds(VersionNumber);
                      
    TechnicalReceiver    char(20);
                      
    TechnicalSender      char(20);
                      
    OrderNumber          char(20);
                      
    Nad                  likeds(Naddim(04);
                      
    Cnt_Nad              int(10);
                      
    Line                 likeds(Linedim(05);
                      
    Cnt_Line             int(10);
             
    end-ds;

             
    dcl-ds  VersionNumber         template qualified;
                      
    VersionName          char(20);
                      
    VersionNo            char(20);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Template Nad                                                     //
          //------------------------------------------------------------------//

             
    dcl-ds  Nad                   template qualified;
                      
    FlagOfParty          char(02);
                      
    AdressGLN            char(20);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Template Line - Enthält die Produkte                             //
          //------------------------------------------------------------------//

             
    dcl-ds  Line                  template qualified;
                      
    LineItemNumber       char(03);
                      
    ProductNumber        char(10);
                      
    Opt                  likeds(Optdim(100);
                      
    Cnt_Opt              int(10);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Template Options                                                 //
          //------------------------------------------------------------------//

             
    dcl-ds  Opt                   template qualified;
                      
    FeatureLineNumber    char(01);
                      
    FeatureNumber        char(01);
                      
    FeatureDescription   char(20);
                      
    OptionNumber         char(01);
                      
    OptionDescription    char(20);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Processing                                                       //
          //------------------------------------------------------------------//

               
    main();

               *
    inlr = *on;
          
    //------------------------------------------------------------------//
          // Main                                                             //
          //------------------------------------------------------------------//
             
    dcl-proc Main;

             
    dcl-s   LocOptions  varchar(128);            // XML-Options
             
    dcl-s   LocFile     varchar(128);            // File

             
    dcl-s   LocInd        uns(10);               // Index
             
    dcl-s   LocInd2       uns(10);               // Index
             
    dcl-s   ItemNumber    like(Line.LineItemNumber);
             
    dcl-s   ProductNumber like(Line.ProductNumber);
             
    dcl-s   FeatureDescription like(Opt.FeatureDescription);

               
    LocFile '/Home/Import/xml/20191031_221735_1TJW5S_2.xml';

               
    LocOptions 'doc=file case=any allowextra=yes +
                             countprefix=cnt_ datasubf=data'
    ;

               
    clear Orders;                              // Init XML-Struktur

               
    xml-into Orders %xml(LocFile:LocOptions);

               for 
    LocInd 1 to Orders.Head.Cnt_Line;    // Loop Produkte
                 
    ItemNumber    Orders.Head.Line(LocInd).LineItemNumber;
                 
    ProductNumber Orders.Head.Line(LocInd).ProductNumber;
                 for 
    LocInd2 1 to Orders.Head.Line(LocInd).Cnt_Opt;
                   
    FeatureDescription =
                    
    Orders.Head.Line(LocInd).Opt(LocInd2).FeatureDescription;
                 endfor;
               endfor;

             
    end-proc;
          
    //------------------------------------------------------------------// 

  7. #7
    Registriert seit
    Jul 2008
    Beiträge
    66
    Danke. Jetzt Läuft es. Franco

Ähnliche Themen

  1. Journalisierte Tabellen
    Von alex61 im Forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 31-03-17, 12:32
  2. Antworten: 9
    Letzter Beitrag: 28-04-16, 08:19
  3. Löschen per SQL in 2 Tabellen
    Von harbir im Forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 12-03-14, 16:34
  4. Tabellen in RPG IV
    Von Gimli im Forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 31-03-03, 11:10
  5. via SQL Tabellen erstellen
    Von infomio im Forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 10-07-02, 15:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •