[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2006
    Beiträge
    111

    Memberverarbeitung mit CPF5152

    Moin!

    Es gibt da eine gewisse Schwierigkeit mit einem Programm, welches ich zu warten habe.

    Im Programm soll ein Member erstellt werden, das vorher entsprechend mit Textpassagen zu füllen ist. Der Text durchläuft vorher das Programm 'TOKENIZE' und wird dort noch umformatiert (Umbrechen nach CRLF, ...) und das Ergebnis als Array zurückgegeben.

    Im Code sieht das ganze so aus:

    Code:
    FTEXT      O  A E             DISK    USROPN
    
    C                   MOVE      *BLANKS       BEFEHL           70    
    C                   EVAL      BEFEHL = 'OVRDBF FILE(TEXT) TOFILE(' 
    C                                    + %TRIMR(PLIB) + '/'          
    C                                    + %TRIMR(PFILE) + ')' + ' '   
    C                                    + 'MBR(' + %TRIMR(PMBR) + ')' 
    C                   MOVE      *BLANKS       QCA                    
    C                   MOVEL(P)  BEFEHL        QCA              75    
    C                   CALL      'QCMDEXC'                            
    C                   PARM                    QCA              75    
    C                   PARM      75            LANG             15 5  
    
    
    C                   MOVEL(P)  MYTEXT    TEXT5000                    
    C                   CALL      'TOKENIZE'                                  
    C                   PARM                    TEXT5000       5000         
    C                   PARM      60            ANZSTELL          6 0       
    C                   PARM                    ANZINDEX          6 0       
    C                   PARM                    FG_TXT                      
    C*                                                                      
    C                   OPEN      TEXT                                      
    C                   Z-ADD     0             Y                 4 0       
    C                   DO        ANZINDEX                                  
    C                   ADD       1             Y                           
    C                   MOVEL(P)  FG_TXT(Y)     TXT3                        
    C                   WRITE     TEXTFF                                    
    C                   ENDDO                                               
    C                   CLOSE     TEXT
    Das Programm bricht nach 56 writes ab - die Meldung lautet:

    Nachricht . . . : E/A-Fehler CPF5152 in Datei TEXT erkannt.
    Ursache . . . . : Die RPG-Prozedur XYZ in Programm PGM/MYPGM hat die
    Nachricht CPF5152 empfangen, während E/A-Operation WRITE für Datei TEXT
    ausgeführt wurde. Die tatsächliche Datei ist TXT3/B1412(B141200001).
    Fehlerbeseitigung: Das Jobprotokoll auf eine vollständige Beschreibung von
    Nachricht CPF5152 prüfen und den für die Programmpflege verantwortlichen
    Benutzer benachrichtigen.

    Joblog:

    Teildatei B141200001 zu Datei B1412 in TXT3 hinzugefügt.
    Abfrageauswahl aus Datei QAQQINI in Bibliothek QUSRSYS abgerufen.
    Satzformat TEXTFF nicht in Teildatei B141200001.
    E/A-Fehler CPF5152 in Datei TEXT erkannt.
    E/A-Fehler CPF5152 in Datei TEXT erkannt.

    Komischerweise funktioniert das Programm nur bei "großen Texten" nicht...

    Der Ursprungstext lautet:
    Code:
    Titel 1.
    
    1Stck.Men.Steckd.Soft-Contact 5 Pol.
    1 Stck.Kais Agro PVC verschr.M63
    1 Stck.ABB FI-Schutzschaltung 125 A F 204A-125/0,3NL
    3 Stck. Weid.Durchgangskl.WDU 50N
    1 Stck.Weid.Durchgangskl.WDU 50NBL
    1 Stck.Weid.Reihenkl.WPE50N 184604
    18 M NYCWY 4x50SM/25
    3 Stck.Lin.-Sicherungen 125A GR 00 1B765
    2 Stck. OBO BBS Schellen 2056 28 -34 MM
    2 Stck.OBO KU.Gegenwannen 2058 28-34MM
    1 Stck.NHOO-Lasttrenner 160A DTL 160
    2 Stck.Anschlussklemme 50QMM BKS5005 ZK 150
    2 Stck. Kais AGRO PVC verschr.M40
    2 Stck.Kais AGRO PVC Gegennutter M40
    
    Titel 2
    1 Stck. Men.Steckdosen Soft - Contact 5Pol. 
    1 Stck. Kais AGRO PVC verschr.M63
    1 Stck. ABB FI - Schutzsch. 125A F204A-125/0,3NL
    3 Stck. Weid. Durchgangskl. WDU 50N
    1 Stck. Weid.Durchgangskl. WDU50NBL
    1 Stck. Weid.Reihenkl. WPE50N
    3 Stck. Lin.NH-Sicher.125A GR00 IB765
    2 Stck. OBO BBS Schellen 2056 28-34MM
    2 Stck. OBO ku.-Gegenwannen 2058 28-34MM
    40 M    NYCWY 4x50SM/25
    1 Stck. NH00 - Latstrenner 160A DTL 160
    2 Stck.Kais. AGRO PVC verschr. M 40
    2 Stck.Kasis.AGRO PVC Gegenmutter M 40
    
    Titel 3
    1 Stck.Men.Steckd.Soft-Conatct 5Pol.
    1 Stck.Kais.AGRO PVC verschr. M63
    3 Stck.Weid.Durchgangskl.WDU 50N
    1 Stck.Weid.Durchgangskl.WDU 50NBL
    1 Stck.Weid.Reihenkl.WPE50N
    8M NYCWY 4x50SM/25
    2 Stck.Erico Caddy Kastenklemme EM 58
    3 M Pipe.Kupa-Rohr PSM-E-MF40
    10 Stck.OBO Spannkl.SKS M12x65+GLMU.M12
    2 M Profilschl.Gel.2M1268SL
    2 Stck.Kais AGRO PVC verschr. M40
    
    Titel 4
    1 Stck.Men.Steckd.Soft.Contact 5Pol.
    1 Stck.Kais.AGRO PVC verschr.M63
    3 Stck.Weid.Durchgangskl.WDU 50N
    1 Stck.Weid.Durchgangskl.WDU50NBL
    1 Stck.Weid.Reihenkl.WPE50N
    3 Stck.Lin.NH-Sicher.125A GR00 1B765
    49 M NYCWY 4x50SM/25
    2 Stck.Kais AGRO PVC verschr. M40
    2 Stck.Kais.AGRO PVC Gegenmutter M 40
    1 Stck.Montageneben- und Logistikkosten(Klein- und Befestigungsmaterial)
    1 Psch Arbeitsleistung

    Der gekürzte Text funktioniert tadellos:

    Code:
    Titel 1.
    
    1Stck.Men.Steckd.Soft-Contact 5 Pol.
    1 Stck.Kais Agro PVC verschr.M63
    1 Stck.ABB FI-Schutzschaltung 125 A F 204A-125/0,3NL
    3 Stck. Weid.Durchgangskl.WDU 50N
    1 Stck.Weid.Durchgangskl.WDU 50NBL
    1 Stck.Weid.Reihenkl.WPE50N 184604
    18 M NYCWY 4x50SM/25
    3 Stck.Lin.-Sicherungen 125A GR 00 1B765
    2 Stck. OBO BBS Schellen 2056 28 -34 MM
    2 Stck.OBO KU.Gegenwannen 2058 28-34MM
    1 Stck.NHOO-Lasttrenner 160A DTL 160
    2 Stck.Anschlussklemme 50QMM BKS5005 ZK 150
    2 Stck. Kais AGRO PVC verschr.M40
    2 Stck.Kais AGRO PVC Gegennutter M40
    
    Titel 2
    1 Stck. Men.Steckdosen Soft - Contact 5Pol. 
    1 Stck. Kais AGRO PVC verschr.M63
    1 Stck. ABB FI - Schutzsch. 125A F204A-125/0,3NL
    3 Stck. Weid. Durchgangskl. WDU 50N
    1 Stck. Weid.Durchgangskl. WDU50NBL
    1 Stck. Weid.Reihenkl. WPE50N
    3 Stck. Lin.NH-Sicher.125A GR00 IB765
    2 Stck. OBO BBS Schellen 2056 28-34MM
    2 Stck. OBO ku.-Gegenwannen 2058 28-34MM
    40 M    NYCWY 4x50SM/25
    1 Stck. NH00 - Latstrenner 160A DTL 160
    2 Stck.Kais. AGRO PVC verschr. M 40
    2 Stck.Kasis.AGRO PVC Gegenmutter M 40
    Weiß hier jemand Rat?

    Gruß
    Bratmaxxe

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Ich denke, das liegt am automatischen Blocken bei O-Dateien.
    Es sieht so aus, dass 55 Sätze in einem Block liegen.
    D.h., dass beim 56. Write der Block vorher ausgegeben werden muss.
    Hier schlägt dann wohl die Runtime-Prüfung zu.
    Wenn weniger als 56 Sätze geschrieben werden, wird vom System beim Close der Block geschrieben. Hier scheint aber keine Prüfung mehr auf den Formatnamen stattzufinden. Dies könnte da eher auf einen "verlässlichen" Systemfehler hindeuten.

    Mach mal einen DSPFD auf die Ausgabedatei, prüfe den Formatnamen und passe das Programm an den korrekten Formatnamen an.
    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
    Jan 2006
    Beiträge
    111
    Hallo Baldur,

    der Satzformatname ist tatsächlich nicht mehr TEXTFF, sondern heißt so wie die Datei "B1412" (gerade ausprobiert). Das Programm läuft dann fehlerfrei durch.

    Allerdings erfolgt die Organisation der Member in Variablen Dateien (hier 14 für das Jahr und 12 für den Monat). Im Januar wäre es dann "B1501"... Wie bekomme ich dass denn jetzt unter einen Hut, bzw. im Programm abgebacken?

    Gruß
    Bratmaxxe

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Ich nehme mal an, dass die Dateien per CRTPF ohne DDS erstellt werden.
    In diesem Fall musst du die Datei im RPG als "Interne Datei" (ohne "E") mit Satzlänge definieren.

    Alternativ erstelle eine DDS-Datei mit dem Format TEXTFF und erstelle die Member-Dateien per CRTDUPOBJ aus der "Master"-Datei.
    Dann bleibt auch das Satzformat erhalten.

    Ich weiß auch nicht, warum das bei dir geändert wurde, aber es muss ja schon mal funktioniert haben.
    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
    Jan 2006
    Beiträge
    111
    Hallo Baldur,

    vielen Dank für Deine Hilfestellung...

    Mit intern Beschrieben Dateien hatte ich bislang noch nichts zu tun und wüsste jetzt nicht genau, was ich im Programm zu tun habe.

    Magst du vielleicht hier nochmal unterstützen? Die Datei "Text" hat 3 Felder:

    Code:
                Daten    Feld-     Puffer Puffer           Feld     Spalten    
     Feld       Art      Länge    Länge   Position         Verwend. Überschrift
     TXT1       ZONED        6  2       6         1        Beides   TXT1       
     TXT2       ZONED        6  0       6         7        Beides   TXT2       
     TXT3       CHAR           60      60        13        Beides   TXT3
    Danke und Gruß
    Bratmaxxe

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Da du Felder hast, ist eine DDS-Datei besser.
    Du referierst doch auf die Datei TEXT in den F-Bestimmungen sonst klappt es ja nicht mit der Umwandlung.
    Warum ist also die Zieldatei nicht auf Basis der Datei TEXT erstellt (CRTDUPOBJ, CPYF ohne Daten)?

    Nimm deine aktuelle Ausgabedatei und benenne diese um in "XXX...".
    Erstelle eine neue Ausgabedatei auf Basis der TEXT und füge die Member an.
    Kopiere ggf. die "alten" Member in die neue Datei.

    Dann sollte in deinem Programm auch das Format wieder stimmen.

    "Interne Dateien" müsste ich im Handbuch auch erst nachlesen.
    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
    Jan 2006
    Beiträge
    111
    Hallo Baldur,

    letztlich habe ich die Dateien jetzt einfach neu erstellt (auf Basis der Text), so dass das Satzformat wieder korrekt ist. Somit brauchte auch im Programm nichts angepasst zu werden

    Vielen Dank nochmal!

    Gruß
    BM

Berechtigungen

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