[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  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.696
    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.696
    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.696
    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.696
    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.696
    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

    RRN funktioniert nur bei gelöschten Sätzen mit Write

    Hallo,

    das funktioniert so nicht. In dieselbe Falle bin ich in ähnlicher Form auch mal getappt.

    Wenn Du mit RecNo(rrn) arbeitest, müssen die Sätze bereits in der Datei vorhanden sein, d.h. delete und update funktioniert.

    Ein Write klappt aber nur, wenn in der Datei schon ein !!! gelöschter !!! Satz vorhanden ist.

    Ausserdem muss "gelöschte Sätze wiederverwenden" für die Datei auf *YES stehen (glaub' ich zumindest).

    Gruss
    Ulli


    Nachtrag:

    steht auch so im ILE AS/400 Reference beim Kapitel RECNO:

    Note: When the RECNO keyword is specified for input or update files with file-addition ('A' in position 20), the value of the fieldname parameter
    must refer to a relative-record number of a deleted record, for the output operation to be successful.

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
  •