[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    Dateifelder sind nach erfolgreichem CHAIN nicht gefüllt

    Hallo zusammen,

    ich versteh es im Moment gerade nicht.

    Ich habe eine Funktion
    In den F-Bestimmungen habe ich die logische Datei EITBANKL01 definiert. Dies ist eine logische Datei der physischen Datei EITBANK
    In den D-Bestimmungen habe ich EITBANK als externe Datenstruktur definiert.
    Da ich bei beiden Definitionen keinen Prefix verwende heißen auch die Felder gleich.

    Nun das Problem:

    Wenn ich erfolgreich auf die EITBANKL01 zugegriffen habe mit CHAIN sind meine Felder nicht gefüllt ???? Weis da jemand warum ???

    Ich hätte hier anbei gerne die Quelle gepostet aber selbst im PHP funktioniert es nicht richtig. Ich hoffe ihr kommt mit den Angaben klar.

    Viele Grüße Harald

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Wenn Du die Datei oder Datenstruktur lokal definierst, muss Du beim OpCode Chain (auch bei allen anderen Lese- und Schreib-Operationen) den Datensatz explizit in die Datenstruktur ausgeben.

    Die Automatik, funktioniert nur unter dem RPG-Zyklus, dem Main-Procedures/Haupt-Programme unterliegen, nicht jedoch (Sub-)Procedures oder Funktionen.

    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
    Feb 2001
    Beiträge
    20.206
    Das ist definitiv falsch, dann würden Programme nach einem CVTRPGSRC ja nicht mehr funktionieren.
    Auch bei ILERPG gilt, dass Namen insgesamt nur einmal definiert werden können!

    Eine einfache DS (auch extern) enthält ausschließlich Namen, die ohne ihren DS-Namen angesprochen werden.
    Einfache F-Bestimmungen generieren I/O-Bestimmungen mit den Namen der Dateifelder.
    Korrespondieren die Namen zur DS ist das Feld immer noch eindeutig und somit auch der DS zugeordnet.
    Deshalb kann ich den selben Namen nicht in 2 DS'n verwenden.

    Hier kommt nun "qualified" zum Zuge.
    Dadurch ändert sich der Feldname einer DS in den eindeutigen Namen "Strukturname.Feldname".
    Der Bezug zwischen den I-Bestimmungen und der DS geht somit verloren, da nun die Namen unterschiedlich sind.

    Dies kann ich nun durch Prefix('Strukturname.') in den F-Bestimmungen wieder aufheben und eine Zuordnung treffen.

    Die Frage hier ist also, ob die E-DS als Qualified definiert ist oder nicht.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    May 2004
    Beiträge
    444
    Hm ???

    Das Dateifeld heißt ID, das Datenstrukturfeld heißt auch ID. Jetzt mache ich einen CHAIN auf die Datei, der Satz wird gefunden und ID ist nicht gefüllt ???? So ist nämlich das Verhalten im Moment. Jetzt könnte es vielleicht noch Probleme bereiten dass die Datenstruktur die innerhalb der Funktion also nach Funktion (b) kommt definiert ist und die f Bestimmung in einer NOMAIN Funktion ganz oben steht ?

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Das ist korrekt.
    Globale Dateien verwenden globale Felder.
    Lokale Felder, die zu globalen Feldern identisch benannt sind, überblenden die globalen Felder. Diese sind dann also nicht sichtbar.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Das ist definitiv falsch, dann würden Programme nach einem CVTRPGSRC ja nicht mehr funktionieren.
    Auch bei ILERPG gilt, dass Namen insgesamt nur einmal definiert werden können!
    Vielleicht solltest Du ab und zu mal die Antworten genau lesen, bevor Du dagegen schießst.
    Dass das Ganze bei global definierten Dateien und Datenstrukturen funktioniert habe ich ja nie bestritten.

    Ich habe von LOKAL (sprich innerhalb von Prozeduren) definierten Dateien und Datenstrukturen geredet.
    Da der ursprüngliche Poster das Problem in einer Funktion hatte, lag der Schluss, dass lokale Definitionen verwendet wurden nahe.
    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

  7. #7
    Registriert seit
    May 2004
    Beiträge
    444
    Jetzt aber mal bitte nicht streiten. Ich bedanke mich recht herzlich für beide Antworten die mir geholfen haben. Ich hatte total ausgeblendet dass meine Datenstruktur innerhalb der Funktion definiert ist und die Dateibestimmung außerhalb. Dass dann die internen Variablen Vorrang haben ist klar.

Similar Threads

  1. nn Benutzer sind online
    By malzusrex in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 3
    Letzter Beitrag: 27-11-13, 16:47
  2. Lagermanagement: Gemeinsam sind wir stark: Aus 2 mach 1 - JOTA
    By Kirsten Steer in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 14-04-03, 13:35
  3. Antworten: 2
    Letzter Beitrag: 06-09-02, 08:59
  4. RPG Systemdatum nach Releasewechsel nicht korrekt
    By EDV-NEW-MEDIA in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 13-02-02, 13:59
  5. Antworten: 2
    Letzter Beitrag: 26-09-01, 16:25

Berechtigungen

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