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

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

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Aug 2014
    Beiträge
    179
    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
    76
    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
    76
    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
    179
    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
    76
    Danke. Jetzt Läuft es. Franco

Similar Threads

  1. Journalisierte Tabellen
    By alex61 in 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
    By harbir in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 12-03-14, 16:34
  4. Tabellen in RPG IV
    By Gimli in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 31-03-03, 11:10
  5. via SQL Tabellen erstellen
    By infomio in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 10-07-02, 15:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •