[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.390
    @Birgitta: Feldgruppen Arrays und den Firlefanz habe ich bereits verdrängt

    @ILEMax: man gibt die obere Menge an (soviele, wie DIM bei der DS) und in der SQLDA steht drin wieviele man wirklich bekommt.
    Vorteil für diesen multiple row fetch ist die Geschwindigkeit. 1000 Sätze dauern ungefär solange wie einer!
    Nachteil ist die etwas kompliziertere Schleifenlogik und dass kein positionierter update mehr geht; letzteres frisst den Zeitvorteil mehr als auf, wenn man alle Sätze ändern will.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    Registriert seit
    Sep 2005
    Beiträge
    427
    @Birgitta
    Doch doch, das hätt ich so definiert

    @BenderD
    Prima, danke! das hilft !!

  3. #3
    Registriert seit
    Sep 2005
    Beiträge
    427
    Jetz muß ich doch noch mal fragen ...

    D MyDS DS Dim(100)
    D MyFld 10A
    geht nicht, da fehlt ein qualified
    Und wenn ich dann ein lookup mache geht der wiederum nicht.

    *RNF5123 30 421 013900 Eintrag für Faktor 2 der Operation LOOKUP ist keine Tabelle

    IleMax

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    OpCode LOOKUP kann nicht für Array-Datenstrukturen verwendet werden. Die Built-In-Funktionen %LOOKUPxx können (ab Release 7.1 --> %LookUp('XXX': MyArrDS(*).Subfield) ) für Array-Datenstrukturen verwendet werden.

    Ansonsten hilft nur eins: Array-Datenstruktur in Feldgruppe umladen und dann den Lookup machen.

    Birgitta
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Sep 2005
    Beiträge
    427
    Sorry aber ich bin wohl zu blöd.
    Mit
    D Frg s 4S 0 DIM(%elem(myds))

    movea Myds Fgr

    kommt nur das 1. Element an. So dusselig kann man sich doch garnich anstellen oder ?
    Max

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Das Problem liegt daran, dass Array Datenstrukturen und Feldgruppen anders aufgebaut sind.

    MoveA funktioniert auf keinen Fall.

    Da in der Array-Datenstruktur nur ein Unterfeld definiert ist und angenommen das Datenstruktur-Unterfeld ist genau so definiert wie das Feldgruppen Element, könnte das Ganze wie folgt funktionieren.

    Code:
    D MyArrDS       DS                              Dim(100) qualified
    D   MyFld                                 10A
    
    D MyFGDS        DS
    D   MyFG                                  10A    Dim(%Elem(MyArrDS))
    
     /Free
        MyFGDS = MyArrDS;
     /End-Free
    Sollte dies nicht funktionieren, musst Du leider eine Schleife bauen:
    Code:
     /Free
        For Index =  1 to %Elem(MyArrDS)
             MyFG(Index) = MyArrDS(Index).MyFld;
        EndFor;
     /End-Free
    Birgitta
    Birgitta Hauser

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

  7. #7
    Registriert seit
    Sep 2005
    Beiträge
    427
    Code:
    D MASN            DS                  DIM(30) QUALIFIED     
    D  MA                            4S 0                       
    D                 DS                                        
    D M                              4S 0 DIM(%ELEM(MASN))
    oder
    Code:
    D MASN            DS                  DIM(30) QUALIFIED     
    D  MA                            4S 0                       
    D mm              DS                                        
    D M                              4S 0 DIM(%ELEM(MASN))
    Beides versucht.
    sowohl die schleife als auch dein 1. vorschlag bringen
    Code:
    *RNF5343 30    505 019600  Feldgruppe hat zu viele übergangene Indizes; die Bestimmung
                               wird ignoriert.
    Wuste gar nicht,das ILERPG so schwer ist.

    HILFE
    Max

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Also ... das folgende Beispiel kann problemlos umgewandelt werden (Release V5R4).

    Code:
    D MyArrDS         DS                  Qualified Dim(10) inz    
     D   MyFld                        4S 0                          
                                                                    
     D MyFGDS          DS                  Inz                      
     D   MyFg                         4S 0 Dim(%Elem(MyArrDS))      
                                                                    
     D Index           S              3U 0                          
      ***********************************************
      /Free                                                         
        *InLR = *On;                                               
                                                                    
         MyArrDS(1).MyFld = 111;                                 
         MyArrDS(2).MyFld = 222;                                 
         MyArrDS(3).MyFld = 333;                                 
                                                                    
         Clear MyFg;                                             
         For Index =  1 To %Elem(MyArrDS);              
             MyFg(Index) = MyArrDS(Index).MyFld;        
         EndFor;                                        
                                                          
        Return;                                           
     /End-Free
    Birgitta
    Birgitta Hauser

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

  9. #9
    Registriert seit
    Sep 2005
    Beiträge
    427
    Moin,

    ja, danke, nun geht es.
    ich hatte gestern statt
    masn(i).ma
    masn.ma(i) geschrieben.

    Das war natürlich falsch

    Danke,
    IleMax

Similar Threads

  1. ILE RPG / SQL Füllen einer Feldgruppe
    By homue in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-07-07, 17:47
  2. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 11:15
  3. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 15:53
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 15:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43

Berechtigungen

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