[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Feb 2008
    Beiträge
    109

    Problem bei WRITE mit relat. Satznummer

    Hallo @ all

    in einem Programm, dass generisch arbeitet, aktualisiere und lösche ich Daten x-beliebiger Dateien

    Code:
    ** Dummyfile für Arbeit mit DBF                    
    FDummyFil  UF A F32766        Disk    Block(*No)   
    F                                     UsrOpn       
    F                                     RecNo(RRN)
    Code:
     **-- Generische DBF-Daten: ---------------
     **                                        
     D GenericDbf      Ds                      
     D   DbfDta                1  32766        
     **
    Code:
     C     RRN           Chain     DummyFil      GenericDbf
     c                   If        %found( DummyFil )      
      *                                                    
     c                   If        UpdAct = 'D'            
     c                   Delete(e) DummyFil                
     c                   Else                              
     c                   Movel(p)  ExtDta        GenericDbf
     C                   Update(e) DummyFil      GenericDbf
     c                   EndIf                             
      *                                                    
     c                   Else                              
      *                                                    
     c                   If        UpdAct = 'A'            
     c                   Movel(p)  ExtDta        GenericDbf
               
     C                   Write(e)  DummyFil      GenericDbf
     c                   EndIf                             
      *                                                    
     c                   EndIf
    UPDATE und DELETE klappt - aber beim WRITE kommt nix in der Datei an.

    Hat jemand einen Tipp?

    Vielen Dank vorab...

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dazu musst du mal ins Joblog schauen.
    Ich denke, dass da ein Fehler angegeben ist, da beim Write ein Formatname und nicht ein Dateiname angegeben werden muss.
    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

  3. #3
    Registriert seit
    Feb 2008
    Beiträge
    109
    Es ist eine programmbeschriebene Datei!

    The name operand must be the name of a file or record format. A record format
    name is allowed only with an externally described file. A file name is required
    with a program described file, and the data-structure operand must be the name of
    a data structure. The record is written directly from the data structure to the file.
    You cannot specify the data-structure operand if name is a record format name.
    The result field must be a data structure name.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ja das schon, aber mach mal einen DSPFD deiner Zieldatei an.
    Wenn dort der Formatname, den du im Write angibst nicht vorhanden ist, wird der Write eben abgelehnt.

    Dein Programm kann nicht mit DDS-beschriebenen Dateien arbeiten.

    PS:
    Mein SQLCPY arbeitet mit SQL und ist deshalb flexibler.
    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
    Feb 2008
    Beiträge
    109
    ... also ich intepretiere den Text aus dem RPG Handbich so, dass bei programmbeschriebenen Dateien über eine zugeordnete Datenstruktur aktualisiert wird!

    *...1....+....2....+....3....+....4....+....5....+ ....6....+....7...+....
    CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result ++++++++Len++D+HiLoEq....
    *
    * The WRITE operation writes the fields in the data structure
    * DS1 to the file, FILE1.
    *
    C WRITE FILE1 DS1
    Figure 335. WRITE Operation
    WRITE (Create New Records)
    Chapter 23.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Schau ins Joblog!
    Lass mal beim write(e) das "(e)" weg, damit du einen Fehler bekommst.
    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

  7. #7
    Registriert seit
    Feb 2008
    Beiträge
    109
    ... ausserdem ist DUMMYFIL hier nicht der Formatname!

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Der Unterschied zwischen Update/Delete und Write ist eben der, dass bei Update/Delete/Read/setll/setgt ein Dateiname erlaubt ist, beim Write ein Formatname erforderlich ist.

    Bei intern beschriebenen Dateien ist der Formatname identisch und deshalb kein Problem.

    Wenn du die Datei als intern beschrieben definierst, aber per OVRDBF auf eine extern beschrieben Datei verweist, gilt die Bedingung der Zieldatei.
    In diesem Fall ist hier der korrekte Formatname erforderlich (was in RPGLE leider nicht dynamisierbar ist).

    Der Compiler weiß ja nicht, was zur Laufzeit erforderlich sein wird.

    Also schau doch bitte ins Joblog um den genauen Fehler festzustellen.
    Ggf. ohne "(e)" testen, dann gibts eine CPF-Nachricht.
    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

  9. #9
    Registriert seit
    Feb 2008
    Beiträge
    109
    ich bekomme :


    Nachrichten-ID . . . . : CPF4011 Bewertung . . . . . . : 10
    Nachrichtenart . . . . : Diagnose
    Sendedatum . . . . . . : 09.01.09 Sendezeit . . . . . . : 16:43:32

    Nachricht . . . : Pufferlänge größer als Satz für Teildatei CBXDTAF.
    Ursache . . . . : Die Dateisatzlänge für Teildatei CBXDTAF in Datei TDTA in
    Bibliothek SU#RMT ist 23. Die Länge des Puffereintrags ist 32766. Der Rest
    des Puffereintrags wird mit Leerzeichen aufgefüllt.
    Fehlerbeseitigung: Falls erforderlich die im Programm angegebene Satzlänge
    auf die Länge des längsten Satzes in der Teildatei ändern. Anschließend die
    Anforderung wiederholen.
    das sollte doch trotzdem funktionieren?

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Es muss noch eine weitere Meldung (ggf. folgend) geben. Die Pufferlänge ist ja nur eine Warnung.

    Welchen Fehler bekommst du wenn du "(e)" beim Write mal wegläßt ?
    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

  11. #11
    Registriert seit
    Feb 2008
    Beiträge
    109
    E/A-Fehler CPF5006 in Datei DUMMYFIL erkannt.
    Funktionsprüfung. RNX1299 nicht überwacht durch PGMA bei Anweisung
    0000000290, Instruktion X'0000'.

  12. #12
    Registriert seit
    May 2007
    Beiträge
    82
    Wir haben das mit dem Recno dann in die Tonne getreten.

    Vielleicht hilft es Dir ja, wenn Du statt des else-Zweiges mit der Write-Funktion dann ein anderes Programm aufrufst, das nicht mit RecNo arbeitet, sondern einen einfachen Write macht?
    Oder defininiere die Datei mittels OVRDBF
    zweimal (mit Recno für Update/Delete Datei1 und ohne Recno Datei2)

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. Problem mit Steuerzeichen in Datenbank?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 26-10-06, 10:07
  3. Authorization Problem nach ändern der Primary Group
    By ChrisX in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 11-10-06, 15:31
  4. Merkwürdiges Problem in VRPG
    By Flappes in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 06-10-06, 08:39
  5. Subfilepositionierung bei der Ausgabe des Steuersatz mit WRITE
    By timeless in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 24-05-06, 06:37

Berechtigungen

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