Ich habe eine Routine, die aus einer IFS-Datei ein SQL Statement liest. Dies ist ein Select, der mit XMLDOCUMENT und XMLROW eine XML-Struktur aufbaut. Das Ergebnis sind mehrere Rows. Diese sollen in eine IFS-Datei weggeschrieben werden. Funktioniert im Grundsatz auch, es kommt aber nur ein Satz in der Datei an. Baue ich keine Schleife um den Fetch, dann ist es der erste, mit Do-Schleife der letzte. Ich seh also zwar was passiert, aber meinen Fehler nicht...

Tips welcome!


Code:
// RunSQL Subroutine
       // -----------------
       begsr RunSQL;
 
            // Prepare SQL from SQL-String
            EXEC SQL
             PREPARE selectstm FROM :sqlstring;
 
            // Declare Cursor for prepared SQL
            EXEC SQL
             DECLARE INXML CURSOR FOR selectstm;
 
            // Open Cursor
            EXEC SQL
              OPEN INXML;
 
            dow sqlcod = 0;
              // Fetch SQL Data into XML-Clob Locator
              EXEC SQL
                FETCH NEXT FROM INXML
                      INTO :IXMLLoc;
              if sqlcod <> 0;
                leave;
              endif;
 
              // Store Data in Host-Variable
              EXEC SQL
                SET  :IXMLDta = :IXMLLoc;
 
              // Store Data in IFS-File
              EXEC SQL
                SET  :IXMLDoc = :IXMLLoc;
            enddo;
 
            // Close SQL-Cursor
            EXEC SQL
              CLOSE INXML;
 
            // Free Clob-Locator Space
            EXEC SQL
              FREE LOCATOR :IXMLLoc;
       endsr;