[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    23

    F-bestimmungen in Prozedur

    Hallo zusammen,

    Wir haben am letzten Wochenende die umstellung auf V6R1 durchgeführt. Da man nun auch in Prozeduren F-bestimmungen einfügen kann habe ich es natürlich direkt mal ausprobiert. Allerdings bekomme ich beim Kompilieren folgende Fehlermeldung:
    RNF7274 30 1 Eine Ergebnisdatenstruktur ist für die Ein-/Ausgabe für eine qualifizierte Datei erforderlich

    Der Code sieht folgendermaßen aus:
    Code:
         P §Test           B
         FTESTDAT01 UF A E           K DISK    rename(TSTR:TESTR)
         D §Test           PI
         d K$TESTDAT01   E DS                  extname(TESTDAT01:*key)
         d                                     Prefix(K$)
         d
    
          /FREE
    
            // Chain(E) %Kds(K$TESTDAT01) TESTDAT01;
    
             FLD = 'HALLO';
    
             Update(E) TESTR;
    
          /END-FREE
         P §Test           E
    Ich hoffe Ihr könnt mir helfen.

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... eine lokal deklariertes File kann man schlecht in einen globalen Format Buffer einlesen => der chain will eine passende Datenstruktur als weiteren Parameter haben...

    D*B
    der wieder mal nicht versteht wofür sowas gut sein soll, außer zum ausprobieren

    Zitat Zitat von Klabautermann Beitrag anzeigen
    Hallo zusammen,

    Wir haben am letzten Wochenende die umstellung auf V6R1 durchgeführt. Da man nun auch in Prozeduren F-bestimmungen einfügen kann habe ich es natürlich direkt mal ausprobiert. Allerdings bekomme ich beim Kompilieren folgende Fehlermeldung:
    RNF7274 30 1 Eine Ergebnisdatenstruktur ist für die Ein-/Ausgabe für eine qualifizierte Datei erforderlich

    Der Code sieht folgendermaßen aus:
    Code:
         P §Test           B
         FTESTDAT01 UF A E           K DISK    rename(TSTR:TESTR)
         D §Test           PI
         d K$TESTDAT01   E DS                  extname(TESTDAT01:*key)
         d                                     Prefix(K$)
         d
    
          /FREE
    
            // Chain(E) %Kds(K$TESTDAT01) TESTDAT01;
    
             FLD = 'HALLO';
    
             Update(E) TESTR;
    
          /END-FREE
         P §Test           E
    Ich hoffe Ihr könnt mir helfen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    wie Dieter sagt, man muss eine entsprechende Ein/Ausgabe-Datenstruktur definieren
    PHP-Code:
         P §Test           B
         FTESTDAT01 UF A E           K DISK    rename
    (TSTR:TESTR)
         
    D §Test           PI
         d K$TESTDAT01   E DS                  extname
    (TESTDAT01:*key)
         
    d                                     Prefix(K$)
         
    d DSTESTDAT01   E DS                  extname(TESTDAT01)
         
    d

          
    /FREE

            Chain
    (E) %Kds(K$TESTDAT01TESTDAT01 DSTestDat01;
             
    FLD 'HALLO';

             
    Update(ETESTR DSTestDat01;

          /
    END-FREE
         P §Test           E 

    der wieder mal nicht versteht wofür sowas gut sein soll, außer zum ausprobieren
    ... also für einzelne Chain oder SetLLs, finde ich das schon ganz brauchbar, wenn man dafür kein embedded SQL verwenden will. (Chain und SetLL sind halt immer noch um einiges schneller als SQL - das gibt sogar IBM hinter vorgehaltener Hand zu).

    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

  4. #4
    Registriert seit
    Sep 2006
    Beiträge
    23
    Hallo,

    ich habe das mal ausprobiert. Allerdings bekomme ich nun folgende Fehlermeldungen:

    Code:
    Chain(E) %Kds(K$TESTDAT01) TESTDAT01 DSTestDat01;
    RNF7595: Die Ergebnisdatenstruktur DSTESTDAT01 enthält kein Unterfeld in Stelle 1 für Satzformat TESTR.
    Da die Datenstruktur DSTESTDAT01 aber extern wie TESTDAT01 beschreiben wird sollte diese doch ein Feld haben oder etwa nicht ??

    und beim Update:
    Code:
    Update(E) TESTR DSTestDat01; 
    RNF7701: Datenstruktur DSTESTDAT01 ist für die Operation nicht zulässig.

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Bei der Definition der Datenstruktur habe ich wohl das Schlüsselwort Qualified unterschlagen. ... Oder aber die Datenstruktur mit LikeRec.
    (Das kommt davon, wenn man irgendwas eintippt ohne es ausprobiert zu haben.)

    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

  6. #6
    Registriert seit
    Sep 2006
    Beiträge
    23
    Guten Morgen,

    Auch mit qualified funktioniert es nicht.
    Es sind die gelcihen Fehlermeldungen.

Similar Threads

  1. Prozedur, in welchem Modul
    By loeweadolf in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-11-06, 15:05
  2. Prozedur variabel aufrufen
    By rolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 14-10-05, 17:06
  3. Externe Prozedur
    By Muchi in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 23-03-05, 08:04
  4. Parameterübergabe in Prozedur -> Compiler schmiert ab
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 23-11-04, 16:46
  5. Rückgabe von 2 Werten aus einer Prozedur
    By BUG in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 18-10-04, 13:55

Berechtigungen

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