Leider klappt das ganze noch nicht so, wie ich mir das vorstelle, Ich wollte die SQL-Lösung von Andreas etwas auseinanderziehen, damit es übersichtlicher wird. Außerdem möchte ich den Response nicht in einer Extra-Datei speichern, sondern lieber in einer Hostvariablen des SQLRPGLE-Programms ablegen.

Jetzt habe ich anscheinend aber ein Zeichensatzproblem. Ich speichere den ResponseHeader zunächst in einem Clob, das folgendermaßen deklariert ist:
Code:
dcl-s responseHeaderClobDS sqltype(CLOB:100000);
Dann speichere ich den Clob-Inhalt in eine "normale" Variable vom Typ varucs2:
Code:
dcl-s httpHeaderString varucs2(2000); 
httpHeaderString = %subst(responseHeaderClobDS_data:1:responseHeaderClobDS_len);
Jetzt lese ich aus dem Header die gewünschten Werte:
Code:
exec sql select * into :responseCode, :responseMsg
    from xmltable('/httpHeader' passing xmlparse(document :httpHeaderString)
          columns resCode varchar(128) path '@responseCode',
               resMsg varchar(128) path 'responseMessage') msg;
Dabei bekomme ich den SQL Fehlercode -16168. Der erweiterte Fehlertext (für die aufgetretene Fehlerart 7) ist: XML-Deklaration in XML-Dokument ungültig. ... Angegebene Codierung wird nicht unterstützt oder interne Codierung weicht von externer Codierung ab.

Ich glaube, dass das an dem Beginn des XML-Strings liegt. Dort steht ?xml version="1.0" encoding="UTF-8" drin. Wenn ich diesen Teil manuell aus dem XML-String entferne, liefert mir die xmltable-Funktion die korrekten Werte.

Ich dachte, wenn ich die HeaderString Variable ucs2 deklariere, müsste das auch UTF-8 umfassen.

Hat jemand eine Idee?

Dieter