[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    122

    Feldgruppe durchsuchen FREE

    Hallo!

    Habe folgende Feldgruppe mit DS definiert:
    D fgr_doppelt DS DIM(150) qualified
    D fg_vvtrnr 4A DIM(150)
    D fg_vkw 2 0 DIM(150)
    D fg_matnr 4A DIM(150)
    D fg_packgr 2A DIM(150)

    Bei der Umwandlung bekomm ich den Fehler:
    4 Der Name oder die Bezugszahl/der Anzeiger ist nicht definiert.

    Aber es ist doch alles definiert:

    *RNF7030 FG_MATNR **UNDEF**
    *RNF7030 FG_PACKGR **UNDEF**
    *RNF7030 FG_VKW **UNDEF**
    *RNF7030 FG_VVTRNR **UNDEF**
    *RNF7031 FGR_DOPPELT(150) DS(1800)
    *RNF7031 FG_MATNR(150) A(4)
    *RNF7031 FG_PACKGR(150) A(2)
    *RNF7031 FG_VKW(150) S(2,0)
    *RNF7031 FG_VVTRNR(150) A4)

    Möchte diese Feldgruppe dann mit %lookup auf MATNR = FG_MATNR überprüfen ob der Wert enthalten ist. Wie mache ich das mit %lookup bzw. was bedeuten die Parameter von %lookup?

    Was bedeutet eigentlich qualified bei der DS?

    Vielen Dank.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    ... also entweder hast Du bei den Feldgruppen FG_MATNR,FG_PACKGR, FG_VKW, FG_VVTRNR ein S für Stand Alone vergessen, oder Du hast keine Feldgruppe sondern eine Array-Datenstruktur, d.h. Du hast 150 Datenstrukturen und in jedem Datenstruktur-Satz hast Du wiederum x Feldgruppen mit jeweils 150 Elementen.

    Qualified bedeutet, dass der Datenstruktur-Name immer vor dem Datenstruktur-Unterfeld angegeben werden muss. Datenstruktur und Unterfeld müssen durch einen Punkt getrennt werden.

    Wenn Du also eins von Deinen Datenstruktur-Unterfeldern ansprechen willst ist die Syntax:

    PHP-Code:
     /Free
        Fgr_Doppelt
    (1).FgMatNr(3) = 'ABC';
     /
    End-Free 
    Ein %LookUp ist bei Array-Datenstrukturen nur begrenzt möglich.

    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

  3. #3
    Registriert seit
    May 2007
    Beiträge
    295

    Bin am verzweifeln :)

    Schönen Vormittag,

    ich habe hier ein "qualified DS" - Array und in diesem speichere ich mir dirty die Bediener ab welche ich bereits im RPGLE verarbeitet habe...

    Und mittels diesem Array möchte ich schauen ob ich einen Bediener bereits bearbeitet habe...

    Ich habs mit %lookup versucht aber irgendwie bekomme ich egal was ich versuche immer die selben Compilierungsfehler:
    Code:
    *RNF0571 20      1 Der zweite Parameter für %LOOKUPxx ist ungültig.             
    *RNF5343 30      1 Feldgruppe hat zu viele übergangene Indizes; die Bestimmung ...
    Das spektakuläre Array schaut so aus:
    Code:
    d r_bediener      ds                  qualified dim(999)
    d   bediener                     1a                     
    d   uhrzeit                       t
    hat jemand evntl ein Beispiel wo ich das abkupfern könnte?

    Vielen Dank im Voraus!

    Lg
    Christian
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Wenn Du %LookUp oder SortA verwenden willst, muss die Datenstruktur anders definiert werden:

    PHP-Code:
    D MyDS            DS                  Qualified                   
    D  r_Bediener                         Dim
    (999)                    
    D    Bediener                   10A  Overlay(r_Bediener)                             
    D    Uhrzeit                      T  Overlay(r_Bediener: *Next)                           
     /
    Free                                                            
       
    If %LookUp(NxtBedienerMyDS.Bediener) > *Zeros;               
       
    MyPos = %LookUp(NxtBedienerMyDS.Bediener);                   
       If 
    MyPos > *Zeros;                                             
          
    MyDS.Bediener(MyPos) = NxtBediener;                         
          
    MyDS.UhrZeit(MyPos)  = %Time();                             
       EndIf; 
    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
    May 2007
    Beiträge
    295
    Vielen, vielen herzlichen dank!
    Werd mein Array gleich so anpassen.

    Lg
    Christian
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

Similar Threads

  1. ILE RPG / SQL Füllen einer Feldgruppe
    By homue in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-07-07, 16:47
  2. Frei Porn Site!
    By Fucasdreh in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 10-01-07, 13:12
  3. Parameter empfangen in Free
    By kr1s in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-09-06, 11:59
  4. free AS400 Telnet Applet
    By cc in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 08-08-06, 23:11

Berechtigungen

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