[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    May 2003
    Beiträge
    5

    Talking OVRDBF - wer knackt die Nuss?

    OVRDBF
    FILE(MUSTER) TOFILE(*LIBL/MM) MBR(MEMBER01)

    OVRDBF
    FILE(MUSTER) TOFILE(*LIBL/PP) MBR(MEMBER99)

    Wie du siehst sind die 2 OVRDBF Befehle unterschiedlich.

    In meinem Programm wird die Datei MUSTER als Input File gelesen. Tatsächlich kommen die Daten jedoch aus anderen Dateien und Teildateien mal aus MM, PP, oder anderen Dateien.
    Der Aufbau von allen Dateien in gleich.
    Es soll aber nur ein Programm geben und nicht für jede Datei ein eigenen Programm.

    Wie kann man dieses in RPGLE realisieren?


  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Hallo,

    soll Dein Programm je nach bedarf eine einzelne Datei bzw. Member verarbeiten, oder müssen gleichzeitig mehrere Dateien-/Member im Zugriff sein?

    In RPGIV gibt es ab Release V5R1M0 Schlüssel-Worte in den F-Bestimmungen EXTFILE und EXTMBR, mit dem Du zur Laufzeit Deine Datei und Member angegeben kannst.

    Die Datei darf erst geöffnet werden, wenn die Datei bzw. das Member feststeht.
    Wird der Datei- / Member-Name als Parameter übergeben und das Programm mit *INLR beendet, sind keine weitere Aktionen in den F-Bestimmungen erforderlich.

    Ansonsten muss die Datei mit USROPN definiert werden.
    Sobald der Datei- und Member-Name feststeht, kann die Datei OPEN geöffnet werden.
    Soll eine andere Datei/Member verarbeitet werden, wird die Datei zunächst über CLOSE geschlossen und anschliessend mit dem neuen Namen geöffent.

    Solltest Du noch kein V5R1M0 haben, kannst Du das gleiche Spiel mit OVRDBF und QCMDEXC machen.
    (Die Dateien dürfen erst geöffnet werden, wenn die OVRDBFs erfolgt sind)

    Du musst beim OVRDBF nur auf den Parameter OVRSCOPE achten. Der Unterlassungs-Wert ist *ACTGRPDFN.
    Wenn Du mit Aktivierungs-Gruppe *NEW arbeitest, solltest Du die DBFOVR auf Job oder Aufruf-Ebene ausführen.

    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
    May 2003
    Beiträge
    5

    Post

    Hallo Birgitta,
    vorab sage ich merci für Deine schnelle Antwort.

    Die Datei und Member ist vor dem open bekannt. Den OVRDBF habe ich vor dem Programmaufruf ausgeführt, der open aus dem RPG Programm für die Datei erfolg also NACH dem OVRDBF.

    Es soll nur ein Member der Datei verarbeitet werden, welches ist jedoch nicht bekannt. Es müssen alle Members nach einander verarbeitet werden.

    Gruss Beo

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Mittels RTVMBRD kann die Liste der Teildateien einer Datei abgerufen werden.
    Ich kann also in einer Schleife jede Teildatei nacheinander mittels OVRDBF und CALL verarbeiten.

    Ist keine Teildatei mehr vorhanden, wird ein CPF-Fehler gemeldet, den ich mit MONMSG abfangen kann.

    Die F1-Hilfe des Kommandos ist ganz gut zu verwenden.

    Die 2. Möglichkeit ist mittels
    DSPFD FILE(MYLIB/MYFILE)
    TYPE(*MBRLIST)
    OUTPUT(*OUTFILE)
    OUTFILE(QTEMP/MYMBR)
    die Liste der Teildateien zu erstellen und anschließend per DCLF und RCVF in einer Schleife die Teildateien abzuarbeiten.
    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Noch eleganter ist die Lösung über APIs.

    Über API QUSLMBR (List Database File Members) können die Namen der Teil-Dateien in einen Userspace geschrieben, und von dort ausgelesen werden.

    Die Verarbeitung über API und Userspace ist schneller als über CL-Befehle mit Datei-Ausgabe.

    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

  6. #6
    Registriert seit
    May 2003
    Beiträge
    5

    Post

    ich habe ein API Handbuch mit einigen APIs jedoch fehlt mir das API. Wo finde/bekomme ich das API?

    Beo

  7. #7
    Registriert seit
    May 2003
    Beiträge
    5

    Post

    Den Vorschlag von Fuerchau habe ich schon vorher verwendet. Der Funktionsiert aber nicht!
    Weil ich in meinem RPG Prog. in den F Best. die Datei AA mit Satzformart AAR habe. Es kommen jedoch ca. 50 weitere Dateien und verschiedenen Membern. Der Satzaufbau ist jedoch überall gleich, der einzige Unterschied ist der Dateiname und das Satzformat.

    Wenn ich das Programm so laufen lasse kommt die Fehlermeldung Satzformat AAR in Datei xxx nicht gefunden.


    Zitat:
    Original erstellt von Fuerchau:
    Mittels RTVMBRD kann die Liste der Teildateien einer Datei abgerufen werden.
    Ich kann also in einer Schleife jede Teildatei nacheinander mittels OVRDBF und CALL verarbeiten.

    Ist keine Teildatei mehr vorhanden, wird ein CPF-Fehler gemeldet, den ich mit MONMSG abfangen kann.

    Die F1-Hilfe des Kommandos ist ganz gut zu verwenden.

    Die 2. Möglichkeit ist mittels
    DSPFD FILE(MYLIB/MYFILE)
    TYPE(*MBRLIST)
    OUTPUT(*OUTFILE)
    OUTFILE(QTEMP/MYMBR)
    die Liste der Teildateien zu erstellen und anschließend per DCLF und RCVF in einer Schleife die Teildateien abzuarbeiten.
    [/quote]


  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Hallo,

    APIs und deren Beschreibung findest Du in der AS/400 Online Library unter: http://publib.boulder.ibm.com/iserie...2924/index.htm
    (Programming --> APIs)

    Dein eigetliches Problem, ist das Satz-Format, das bei jedem Member unterschiedlich sein kann.
    Bei gleichem Aufbau ging ich davon aus, das auch das Satz-Format gleich ist.

    M.E. hast Du nur eine Chance:
    Mittels OVRDBF Datei und Member zu überschreiben.
    Im RPG-Programm die überschriebene Datei mittels embedded SQL verarbeiten.

    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

  9. #9
    Registriert seit
    Sep 2001
    Beiträge
    156

    Post

    Ich würde dann noch beim OVRDBF den Parameter OVRSCOPE(*CALLLVL) angeben, damit sich der Override auch auf ein RPG-Programm in einer anderen Activationgroup bezieht.
    Gruss
    Rolf

  10. #10
    Registriert seit
    May 2003
    Beiträge
    5

    Post

    Rolf,
    danke auch für Deinen Vorschlag, doch leider funktioniert das auch nicht! Das Programm tut jetzt so als wenn es die Datei verarbeiten würde doch es wird NICHT Datei vom OVRDBF genommen sondern der Dateiname der in den F-Best. im RPGLE Prog steht.

    Wenn ich das API verwende habe ich die Datei mit allen Membern, bis hier ist alles klar. Doch wie kann ich die verschiedenen
    ca. 50 verschiedenen Files und den ganzen Member verarbeiten? wie gesagt der Satzaufbau ist bei allen gleich, der einzige Unterschied ist der Dateiname und der Satzformatname.

    Habt Ihr noch eine Idee?

    Beo

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287

    Post

    Hallo,
    am Besten das machen, was man Dir rät. Vielleicht nochmal in Einzelschritten:

    Datei in den F Bestimmungen als UserControlled öffnen deklarieren

    Schleife bis alle Member verarbeitet sind
    OVRDBF auf nächstes Member
    Open der Datei
    Sätze verarbeiten
    Close
    Ende der Schleife

    Dieter

    Zitat:
    Original erstellt von beo:
    Rolf,
    danke auch für Deinen Vorschlag, doch leider funktioniert das auch nicht! Das Programm tut jetzt so als wenn es die Datei verarbeiten würde doch es wird NICHT Datei vom OVRDBF genommen sondern der Dateiname der in den F-Best. im RPGLE Prog steht.

    Wenn ich das API verwende habe ich die Datei mit allen Membern, bis hier ist alles klar. Doch wie kann ich die verschiedenen
    ca. 50 verschiedenen Files und den ganzen Member verarbeiten? wie gesagt der Satzaufbau ist bei allen gleich, der einzige Unterschied ist der Dateiname und der Satzformatname.

    Habt Ihr noch eine Idee?

    Beo
    [/quote]

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

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Da kann ich nur Birgitta zustimmen.
    Das Problem in RPG ist, dass ich das Satzformat NICHT variabel gestalten kann, einzige Ausnahme:
    READ >Dateiname<
    anstelle
    READ >Formatname<

    Dann wird der Formatname in der INFDS abgelegt. Im OVRDBF solltest du allerdings LVLCHK(*NO) ergänzen.

    Problem: bleibt nur noch der Feldname, wenn der auch variabel ist, hast du selbst mit SQL keine Chance und in RPG schon gar nicht.

    Ansonsten bleibt halt nur eine andere Sprache wie z.B. COBOL, dort kann der Satzformat-Name in einer Variablen verwendet werden und Feldnamen interessieren fast nicht.

    PS:
    Warum kopierst du die Teildateien nicht einfach per CPYF in eine Arbeitsdatei, die auch zur Compilezeit existiert und verabeitest nur diese Arbeitsdatei ?

    [Dieser Beitrag wurde von Fuerchau am 06. Mai 2003 editiert.]
    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

Similar Threads

  1. Problem mit OVRDBF?
    By MatthiasK in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 08-02-06, 12:51
  2. OVRDBF verursacht Fehler RNX1011 in RPG
    By hansr in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 11-05-05, 12:50
  3. OVRDBF
    By Newbie in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 26-07-02, 10:47
  4. SQL-Cobol und OVRDBF
    By kaym in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 07-07-02, 13:49
  5. OVRDBF in CL-PGM abfragen
    By Amalie in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 23-11-01, 08:37

Berechtigungen

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