Folgendes Problem.

Ich schreibe mit einem SQLRPGLE-Programm Daten in eine Printerfile.
Die Printerfile hat folgende Informationen:

Code:
                          Druckerdatei ändern (CHGPRTF)                         
                                                                                
 Auswahl eingeben und Eingabetaste drücken.                                     
                                                                                
 Datei  . . . . . . . . . . . . . > PRTOMSXML     Name, generisch*, *ALL        
   Bibliothek . . . . . . . . . .     *LIBL       Name, *LIBL, *ALL, *ALLUSR... 
 Einheit:                                                                       
   Drucker  . . . . . . . . . . .   *JOB          Name, *SAME, *JOB, *SYSVAL    
 Druckereinheitentyp  . . . . . .   *SCS          *SAME, *SCS, *IPDS, *LINE...  
 Seitengröße:                                                                   
   Länge--Zeilen pro Seite  . . .   255           .001-255.000, *SAME           
   Breite--Stellen pro Zeile  . .   378           .001-378.000, *SAME           
   Maßangabe  . . . . . . . . . .   *ROWCOL       *SAME, *ROWCOL, *UOM          
 Zeilen pro Zoll  . . . . . . . .   6             *SAME, 6, 3, 4, 7.5, 7,5...   
 Zeichen pro Zoll . . . . . . . .   10            *SAME, 10, 5, 12, 13.3, 13... 
 Überlaufzeile  . . . . . . . . .   255           1-255, *SAME                  
 Satzformat-Aktualitätsprüfung  .   *NO           *SAME, *YES, *NO              
 Text 'Beschreibung'  . . . . . .                                               
Auswahl eingeben und Eingabetaste drücken.                                     
                                                                               
                                                                               
                 Zusätzliche Parameter                                         
                                                                               
Rand auf der Vorderseite:                                                      
  Oberer Seitenrand  . . . . . .   *DEVD         0-57.790                      
  Linker Seitenrand  . . . . . .                 0-57.790                      
Rand auf der Rückseite:                                                        
  Oberer Seitenrand  . . . . . .   *FRONTMGN     0-57.790                      
  Linker Seitenrand  . . . . . .                 0-57.790                      
Satzumbruch  . . . . . . . . . .   *NO           *SAME, *NO, *YES              
Maßnahme bei undruckb. Zeichen:                                                
  Zeichen ersetzen . . . . . . .   *YES          *SAME, *YES, *NO              
  Ersatzzeichen  . . . . . . . .   ' '           40-FE, *SAME, *BLANK          
Seite ausrichten . . . . . . . .   *NO           *SAME, *NO, *YES              
Steuerzeichen  . . . . . . . . .   *NONE         *SAME, *NONE, *FCFC, *MACHINE 
Kanalwerte:                                                                    
  Kanal  . . . . . . . . . . . .   *NORMAL       *SAME, *NORMAL, 1, 2, 3, 4... 
  Zeilennummer für Kanal:                                                      
  Leitung  . . . . . . . . . . .                 1-255                         
     + für weitere Werte                                                       
Genauigkeit  . . . . . . . . . .   *CONTENT      *SAME, *CONTENT, *ABSOLUTE    
Druckqualität  . . . . . . . . .   *STD          *SAME, *STD, *DEVD, *DRAFT... 
Papierzufuhr . . . . . . . . . .   *DEVD         *SAME, *DEVD, *AUTOCUT...     
Papierfach . . . . . . . . . . .   00001         1-255, *SAME, *E1, *FORMDF    
Ausgabefach  . . . . . . . . . .   *DEVD         1-65535, *SAME, *DEVD         
Schriftart:                                                                    
  Kennung  . . . . . . . . . . .   *CPI          Zeichenwert, *SAME, *CPI...   
  Punktgröße . . . . . . . . . .                 000.1-999.9, *NONE            
Zeichen-ID:                                                                    
  Grafikzeichensatz  . . . . . .   *DEVD         Zahl                          
  Codepage . . . . . . . . . . .                 Zahl                          
Dezimalformat  . . . . . . . . .   *JOB          *SAME, *FILE, *JOB         
Schriftartzeichensatz:                                                      
  Zeichensatz  . . . . . . . . .   *FONT         Name, *SAME, *FONT         
    Bibliothek . . . . . . . . .                 Name, *LIBL, *CURLIB       
  Codepage . . . . . . . . . . .                 Name                       
    Bibliothek . . . . . . . . .                 Name, *LIBL, *CURLIB       
  Punktgröße . . . . . . . . . .                 000.1-999.9, *NONE         
Codierte Schriftart:                                                        
  Codierte Schriftart  . . . . .   *FNTCHRSET    Name, *SAME, *FNTCHRSET    
    Bibliothek . . . . . . . . .                 Name, *LIBL, *CURLIB       
  Punktgröße . . . . . . . . . .                 000.1-999.9, *NONE         
Tabellenverweiszeichen . . . . .   *NO           *SAME, *YES, *NO           
Seitendefinition . . . . . . . .   *NONE         Name, *SAME, *NONE         
  Bibliothek . . . . . . . . . .                 Name, *LIBL, *CURLIB       
Formulardefinition . . . . . . .   *NONE         Name, *SAME, *NONE, *DEVD  
  Bibliothek . . . . . . . . . .                 Name, *LIBL, *CURLIB       
AFP-Zeichen  . . . . . . . . . .   *NONE         Zeichenwert, *SAME, *NONE    
     + für weitere Werte                                                      
Grad der Seitendrehung . . . . .   *AUTO         *SAME, *AUTO, *DEVD, *COR... 
Log. Seiten pro phy. Seite . . .   1             1-4, *SAME                   
Ausgabe verkleinern  . . . . . .   *TEXT         *SAME, *TEXT, *NONE          
Drucktext  . . . . . . . . . . .   *JOB                                       
Hardwareausrichtigung  . . . . .   0             *SAME, 0, 50, 100            
Beidseitig drucken . . . . . . .   *NO           *SAME, *NO, *YES, *TUMBLE... 
Schreiben verzögern  . . . . . .   *YES          *SAME, *YES, *NO             
Maßeinheit . . . . . . . . . . .   *INCH         *SAME, *INCH, *CM            
Schablone für Vorderseite:                                                    
  Schablone  . . . . . . . . . .   *NONE         Name, *NONE, *SAME           
    Bibliothek . . . . . . . . .                 Name, *LIBL, *CURLIB         
  Oberer Seitenrand  . . . . . .                 0-57.790, *SAME              
  Linker Seitenrand  . . . . . .                 0-57.790, *SAME              
Schablone für Rückseite:                                                       
  Schablone  . . . . . . . . . .   *FRONTOVL     Name, *FRONTOVL, *NONE, *SAME 
    Bibliothek . . . . . . . . .                 Name, *LIBL, *CURLIB          
  Oberer Seitenrand  . . . . . .                 0-57.790, *SAME               
  Linker Seitenrand  . . . . . .                 0-57.790, *SAME               
  Konstante Rückseite  . . . . .                 *NOCONSTANT, *CONSTANT, *SAME 
Zeilendaten konvertieren . . . .   *NO           *NO, *YES, *SAME              
IPDS-Durchgriff  . . . . . . . .   *DEVD         *DEVD, *NO, *YES, *SAME       
Liste d. Benutzerressourc.bib.     *DEVD         Name, *DEVD, *NONE...         
     + für weitere Werte                                                       
Eckklammer . . . . . . . . . . .   *NONE         *NONE, *BOTRIGHT...           
Randheftung:                                                                   
  Bezugskante  . . . . . . . . .   *NONE         *NONE, *DEVD, *BOT, *RIGHT... 
  Abstand zur Bezugskante  . . .                 0-57.790, *DEVD, *SAME        
  Anzahl Klammern  . . . . . . .                 1-122, *DEVD, *SAME           
  Klammernabstand  . . . . . . .                 0-57.790, *DEVD, *SAME        
     + für weitere Werte                                                       
Sattelheftung:                                                                 
  Bezugskante  . . . . . . . . .   *NONE         *NONE, *TOP, *LEFT, *DEVD...  
  Anzahl Klammern  . . . . . . .                 1-122, *DEVD, *SAME           
  Klammernabstand  . . . . . . .                 0-57.790, *DEVD, *SAME        
     + für weitere Werte                                                       
Schriftartauflösung f. Format.     *DEVD         *DEVD, *SEARCH, 240, 300...   
Spool-Verarbeitung der Daten . .   *YES          *SAME, *YES, *NO              
Spool-Ausgabewarteschlange . . .   OMS           Name, *SAME, *JOB, *DEV       
  Bibliothek . . . . . . . . . .     *LIBL       Name, *LIBL, *CURLIB          
Formularart  . . . . . . . . . .   *STD          Zeichenwert, *SAME, *STD      
Kopien . . . . . . . . . . . . .   1             1-255, *SAME                  
Verfallsdatum für Datei  . . . .   *NONE         Datum, *DAYS, *NONE, *SAME    
Tage bis zum Verfall der Datei                   1-366                         
Zu druckender Seitenbereich:                                                   
  Anfangsseite . . . . . . . . .   1             Zahl, 1, *SAME, *ENDPAGE      
  Endseite . . . . . . . . . . .   *END          Zahl, *SAME, *END             
Max. Anzahl Spool-Ausgabesätze     20000000      1-99999999, *SAME, *NOMAX     
Dateitrennseiten . . . . . . . .   0             0-9, *SAME                    
Zeitplan für Spool-Ausgabe . . .   *FILEEND      *SAME, *FILEEND, *JOBEND...   
Spool-Datei anhalten . . . . . .   *NO           *SAME, *NO, *YES              
Spool-Datei sichern  . . . . . .   *NO           *SAME, *NO, *YES              
Ausgabepriorität (in OUTQ) . . .   *JOB          *SAME, *JOB, 1, 2, 3, 4, 5... 
Benutzerdaten  . . . . . . . . .   *SOURCE       Zeichenwert, *SAME...         
Spool-Dateieigner  . . . . . . .   *CURUSRPRF    *SAME, *CURUSRPRF, *JOB...    
Benutzerdefinierte Auswahl . . .   *NONE         Zeichenwert, *SAME, *NONE     
     + für weitere Werte                                                       
 Benutzerdefinierte Daten . . . .   *NONE                                       
                                                                                
                                                                                
                                                                                
 Benutzerdefiniertes Objekt:                                                    
   Objekt . . . . . . . . . . . .   *NONE         Name, *SAME, *NONE            
     Bibliothek . . . . . . . . .                 Name, *LIBL, *CURLIB          
   Objektart  . . . . . . . . . .                 *SAME, *DTAARA, *DTAQ...      
 Zieldatenstromdatei  . . . . . .   *SAME                                       
                                                                                
 Datenstationsanpassungsobjekt  .   *NONE         Name, *SAME, *NONE, *PDF      
   Bibliothek . . . . . . . . . .                 Name, *LIBL, *CURLIB          
 Maximale Dateiwartezeit  . . . .   *IMMED        Sekunden *SAME, *IMMED, *CLS  
 Off. Datenpfad gemeinsam ben.  .   *NO           *SAME, *NO, *YES
Die Printerfile ist ganz normal in der F-Bestimmung definiert.
Code:
FPRTOMSXML O    F  198        PRINTER USROPN
Das SQLRPGLE-Programm ermittelt Daten und bearbeitet mittels SQL-Funktionen einen String.
Der String wird von Sonderzeichen befreit und baut ein XML auf.
Für das XML nutzen wir keine System i-Funktionen sondern bauen das händig auf.
Wir setzen im Programm die Anfang und Endetags selbstständig.

Das Austauschen von den Sonderzeichen bzw. ungültigen Zeichen erfolgt mit folgender Funktionen:
Code:
C*----------------------------------------------------------------          
C**  C O N V E 2    SUCHE und ERSETZE ungewünschte Zeichen                  
C*----------------------------------------------------------------          
C     CONVE2        BEGSR                                                   
C**                                                                         
C/EXEC SQL                                                                  
C+ Set :$RESULT = Replace(Trim(:$RESULT), :$FIND, Trim(:$REPLACE))          
C/END-EXEC                                                                  
C**                                                                         
C                   ENDSR
Und die Ausgabe in die Printerfile bzw. die Ausgabe der Spooldaten erfolgt normal über die O-Bestimmungen:
Code:
OPRTOMSXML E            EXCXML         1                    
O                       XMLSTR             198
Eins noch.
Ich weiß das man sicherlich besser ein XML transportieren kann.
Hier habe ich leider den "Krieg" verloren und ich MUSS das XML über einen Spoolstream ausgeben.

Nun zu meinem Problem:

Es kommt immer wieder mal vor, dass das Drucken ewig dauert.
Was zur Folge hat, das weitere Jobs/Prozesse die folgen, entsprechend verzögert werden.

Ich finde leider nichts auffälliges, was uns da an der Stelle stören könnte.
Eventuelle Arbeitsspitzen auf dem System kann ich auch ausschließen, weil ich es auch Nachts versucht habe, wo ich alleine auf dem System war, alle Sicherungsjobs durch waren und das System am "schlafen" war.

Ich hoffe wir finden ein paar Ansätze =)

Danke euch allen =)