[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    CPF5011 Fehlermeldung

    Hallo,

    ich hätte gerne vor Abarbeitung des Subfiles ermittelt wie oft die Auswahl "E" vorkommt um gewisse Felder zu sperren.
    Code:
    DOU %Eof(TEST1D);       
      IF S2AUSW = 'E';      
        I += 1;             
      ENDIF;                
      *IN14 = *ON;          
      Update FmtS2;         
      *IN14 = *OFF;         
                           
      READC(E) FMTS2;       
    ENDDO;     
    
    // Anschließend echte Verarbeitung
    DOU %Eof(TEST1D);       
          :
      IF S2AUSW = 'E';      
        S2#RCC = S2#REC;   
        EXSR ScreenFMTF1;                
      ENDIF;                
          :    
      S2AUSW = *BLANKS;   
      Update FmtS2;    
      READC(E) FMTS2;     
    ENDDO;
    Denn Bildschirmfile wandle ich auch mit RSTDSP *YES
    *IN14 = Sflnextchange

    Aber trotzdem bekomme ich die Fehlermeldung:
    Code:
                           Weitere Nachrichteninformationen                        
                                                                                  
    Nachrichten-ID . . . . :   CPF5011       Bewertung  . . . . . . :   30         
    Nachrichtenart . . . . :   Senderkopie                                         
    Sendedatum . . . . . . :   14.05.26      Sendezeit  . . . . . . :   15:28:37   
                                                                                   
    Nachricht . . . :   Teildatei durch GET für Datei TEST1D in Bibliothek         
      H_TUSROBJ ändern.                                                            
    Ursache  . . . . :  Vor GET wurden keine Änderungen vorgenommen. Die vorherige 
      Operation prüfen.                                                            
    Fehlerbeseitigung:  Die Reihenfolge der Programmoperationen ändern. Neu        
      kompilieren. Den Befehl wiederholen.                                         
    Auswahlmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . :       
      I -- Die Anforderung wird ignoriert. Die Steuerung wird an den Benutzer      
        zurückgegeben.                                                             
      C -- Die Anforderung wird abgebrochen. Abbruchnachricht CPF5104 wird         
        gesendet.                                                                  
                                                                      Ende
    Wie kann ich sonst die Anzahl des Auswahl im Subfile ermitteln?

    Danke schon mal im Voraus für die Hilfe

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nach einem READC ist der Status der Änderung eines SFL-Satzes weg.
    Erst nach einem erneuten EXFMT des CTL-Formates kann wieder READC verwendet werden.
    Wenn also READC einmal EOF geliefert hat, meldet der nächste READC den CPF-Fehler.

    "Komfortable" Programme arbeiten hier mit einer "Bestätigungssubfile".
    D.h., per READC werden die Sätze mit der 1. gefunden Auswahl in eine 2. SFL kopiert, diese dann angezeigt und nach Bestätigung dann verarbeitet (siehe z.B. WRKSPLF).

    Die Anzeige kann natürlich auch unterbleiben und die 2. SFL einfach per READ verarbeitet werden.

    Alternativ kannst du dir auch eine Tabelle mit den Satz-Nr'n merken und dies dann per CHAIN SFLSATZ abarbeiten.
    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
    Oct 2013
    Beiträge
    171
    *IN14 wird wohl das DSPATR(MDT) bedingen, wenn man den Satz damit updatet, dann liest den READC auch wieder.
    Und ad Fehler: Das Subfile unterscheidet sich von einer normalen Datei in der Hinsicht nicht - man muss einen Satz lesen, bevor man ihn updaten kann. Und das sagt die Meldung.
    Wenn Du zwischen dem ENDDO von oben und dem UPDATE in der zweiten Schleife wirklich kein Lesen hast, ist das die Ursache.

  4. #4
    Registriert seit
    Apr 2012
    Beiträge
    360
    Ich hatte das READC vor der 2. Dountil-Schleife vergessen.
    Nun funktioniert es.

    Danke vielmals.

    Mein Sfl sieht wie folgt aus
    Code:
    A          R FMTS2                     SFL              
    A  14                                  SFLNXTCHG        
    A            S2#REC         4S 0H                       
    A            S2AUSW         1A  B  6  2

    Was ist mit DSPATR(MDT) bedingen gemeint bzw. wie wäre das umzusetzen?

    Danke

  5. #5
    Registriert seit
    Oct 2013
    Beiträge
    171
    Gerne.
    DSPATR(MDT) ist genau das Gleiche wie SFLNXTCHG, nur eine andere Schreibweise.
    Beide setzen das MDT - Modified Data Tag - den "Datenänderungsanzeiger", was dazu führt, dass Du den Satz mit READC nochmal lesen kannst.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    MDT ist ein Attribut auf Feldebene.
    Ohne SFLNXTCHG mit BZ gibt's keinen READC!
    Beim WRITE mit BZ *ON wird der Satz als geändert markiert, ohne eben 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

Similar Threads

  1. ODBC Fehlermeldung
    By Rene_M in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 18-11-13, 12:56
  2. Fehlermeldung???
    By Achim in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 18-11-02, 10:03
  3. CA Express- Fehlermeldung!
    By Bleil in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 21-08-02, 13:20
  4. Fehlermeldung
    By Hans Zuther in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 12-06-02, 08:45
  5. AS400 Fehlermeldung
    By Matze in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-03-01, 08:41

Berechtigungen

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