[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2002
    Beiträge
    61

    Mehrfach Datenstruktur

    Hallo,

    ich kämpfe mit der Übergabe von Mehrfachdatenstrukturen mittels Procedure. Die sieht folgendermaßen aus:

    D VeDs1 DS Qualified Dim(10)
    D Fl1 5
    D Ve1 LikeDs(IntVeDs) Dim(%Elem(IntVeDs))
    D*
    D IntVeDs DS Dim(10) Qualified
    D VeNumbers1 6 0 Dim(1000)
    D VeValues1 13 4 Dim(1000)

    Der Aufruf erfolgt so:

    C callp getFlVeValues(einFa:einObj:einObja:einObjg: K_VESCHP
    C einJahr:einMonat:Veds1)

    Also "VeDs1" wird mitgeschickt.

    Jetzt bekomme ich beim Kompilieren den Fehler
    *RNF5407 20 412 012700 Mehr Parameter im Prototypaufruf übergeben als zulässig.

    Heisst das, ich kann eine so große Anzahl von Parametern so nicht übergeben ?

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Wie sieht den der Prototyp zu der Prozedur aus?

    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
    Feb 2002
    Beiträge
    61
    Hallo,

    der Prototyp sieht so aus:

    D getFlVeValues PR
    D p#fa 2 0 value
    D p#obj 7 0 value
    D p#objA 1 0 value
    D p#objG 1 0 value
    D p#jahr 4 0 value
    D p#monat 2 0 value
    D p#VeDs DS Qualified dim(10)
    D Fl 5
    D Ve LikeDs(VeDs) Dim(10)
    D*
    D VeDs DS Qualified
    D p#VeNumbers 6 0 Dim(1000)
    D p#VeValues 13 4 Dim(1000)

    Lg Christian

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Die Datenstruktur ist nicht als Parameter-Feld, sondern als eigenständige Datenstruktur definiert.

    Du must im Prototypen die Datenstruktur mit LIKEDS und Dim Definieren, jedoch ohne DS!

    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
    Feb 2002
    Beiträge
    61
    Meinst du die ganz DS ab p#VeDs ?

    So:

    p#VeDs Likeds(i#VeDs) Dim(10)

    i#VeDs Ds Qualified dim(10)
    Fl 5
    Ve LikeDs(VeDs) Dim(10)

    VeDs Ds Qualified
    p#VeNumbers 6 0 Dim(1000)
    p#VeValues 13 4 Dim(1000)

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Du musst Referenz-Datenstrukturen bilden, die in die Copy-Strecke in der der Prototyp integriert wird eingebunden werden.
    Die Dimension (Schlüssel-Wort DIM()) wird aus einer Referenz-Struktur nicht übernommen, sonder muss explizit im Prototypen bzw. Procedure Interfache angegeben werden. Deshalb habe ich in dem Beispiel die Referez-Struktur RefVEDS auch ohne Dimension definiert.

    Etwa so:
    Code:
    D getFlVeValues     PR
    D    p#fa                          2 0 value
    D    p#obj                         7 0 value
    D    p#objA                        1 0 value
    D    p#objG                        1 0 value
    D    p#jahr                        4 0 value
    D    p#monat                       2 0 value
    D    p#VEDS                            LikeDS(RefVeDS) Dim(10)
    
     * Definition von Referenz-Datenstrukturen 
     * Template (ab 6.1) = Verwendung nur zur Compile-Zeit
    D    RefVeDs         DS                Qualified Template
    D       Fl                         5
    D       Ve                             LikeDs(RefVeDs) Dim(10)
    
    D    RefVeDs         DS                Qualified Template
    D      p#VeNumbers                 6 0 Dim(1000)
    D      p#VeValues                 13 4 Dim(1000)
    In der Procedure mit dem Procedure Interface ist die Definition der Datenstruktur nicht erforderlich, da über den Prototypen/Procedure Interface definiert.
    In den rufenden Prozeduren muss eine (locale) Datenstruktur über LIKEDS basierend auf der Referenz-Struktur (Template!) definiert werden.

    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
    Feb 2002
    Beiträge
    61
    Template kenne ich noch nicht. Wenn ich richtig nachgelesen habe, sind diese Variablen oder Datenstrukturen nicht als Programmvariablen verwendbar.

    Wie greife ich jetzt auf die Feldgruppe p#VeNumbers zu?

    eval p#VeDs(#2).Ve.p#VeNumbers = ....

    bringt mir einen Fehler:

    RNF7591: An operand of a qualified name expression is not valid.

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Die Namen der Parameter ("Variablen") im Prototype sind nur Schein.
    Der Prototype dient jediglich als Definition.
    Du könntest beim Prototype auch die Namen ganz weg lassen und nur die Datentypdefinitionen stehen lassen.

    Ich fürchte, dass hier ein paar Grundlagen fehlen.
    Es wäre sicher nicht schlecht wenn du dir ein Redbook her nimmst oder eine ILE RPG Schulung investierst.
    Sonst kommst du schnell zum nächsten Problem.
    (Nur ein Tipp von mir )

    lg Andreas

  9. #9
    Registriert seit
    Feb 2002
    Beiträge
    61
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Die Namen der Parameter ("Variablen") im Prototype sind nur Schein.
    Der Prototype dient jediglich als Definition.
    Du könntest beim Prototype auch die Namen ganz weg lassen und nur die Datentypdefinitionen stehen lassen.

    Ich fürchte, dass hier ein paar Grundlagen fehlen.
    Es wäre sicher nicht schlecht wenn du dir ein Redbook her nimmst oder eine ILE RPG Schulung investierst.
    Sonst kommst du schnell zum nächsten Problem.
    (Nur ein Tipp von mir )

    lg Andreas
    Danke für deinen tollen Tipp. Wenn ich die Zeit habe ein Redbook durchzulesen, hätte ich mich nicht ans Forum gewandt.
    In der Zeit, hättest du - falls du es überhaupt weißt - auch die richtige Eval-Lösung schreiben können.

    Übringens, so gehört es:

    eval p#VeDs(#2).Ve(#2).p#VeNumbers = ....

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Danke für deinen tollen Tipp. Wenn ich die Zeit habe ein Redbook durchzulesen, hätte ich mich nicht ans Forum gewandt.
    In der Zeit, hättest du - falls du es überhaupt weißt - auch die richtige Eval-Lösung schreiben können.
    Genau dafür ist dafür ist das Forum da und glaub mir, es nehmen sich viele Leute sich Zeit (unentgeltlich!) die Fragen zu analysieren und Lösungen vorzuschlagen.

    Ich denke, Du solltest deinen Ton überdenken, ansonsten das Redbook schnell der letzte Helfer sein wird.
    kf

  11. #11
    Registriert seit
    Feb 2002
    Beiträge
    61
    Zitat Zitat von camouflage Beitrag anzeigen
    Genau dafür ist dafür ist das Forum da und glaub mir, es nehmen sich viele Leute sich Zeit (unentgeltlich!) die Fragen zu analysieren und Lösungen vorzuschlagen.

    Ich denke, Du solltest deinen Ton überdenken, ansonsten das Redbook schnell der letzte Helfer sein wird.
    Du solltest deinen Beitrag nochmals schreiben, denn ich kenne mich überhaupt nicht aus. Oder besser, du schreibst mir eine PN, weil diese persönlichen Einträge niemanden interessieren. Und bitte aus jetzt, das ist alles Themenverfehlung.

  12. #12
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von beegee Beitrag anzeigen
    Danke für deinen tollen Tipp. Wenn ich die Zeit habe ein Redbook durchzulesen, hätte ich mich nicht ans Forum gewandt.
    In der Zeit, hättest du - falls du es überhaupt weißt - auch die richtige Eval-Lösung schreiben können.
    Zum einen gab ich dir für eines deiner Probleme einen Tipp und zum anderen solltest du den Rat von camouflage zu herzen nehmen.

    Hier im Forum versuchen wir soweit es geht zu helfen.
    Doch du wirst hier nicht viel Erfolg haben wenn du solch einen Ton angiebst!!

Similar Threads

  1. Datenstruktur negative Werte
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 25-02-13, 11:57
  2. Datenstruktur mit Mehrfachvorkommen
    By JP in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 09-08-06, 08:35
  3. Datenstruktur
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 24-07-06, 13:25
  4. Externe Datenstruktur / Datenzuweisung
    By Schorsch in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 09-12-05, 13:58
  5. Antworten: 5
    Letzter Beitrag: 06-05-04, 14:51

Berechtigungen

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