У меня есть программа RPGILE, которая возвращает SQL с XMLSERIALIZE в переменную CHAR (32000).
Иногда результат будет больше 32 КБ.
Какой самый простой способ сделать это? Программа не компилируется, если я определяю поле clob и затем использую его для возврата результата SQL.
Я работал над созданием файла в QTEMP с полем clob, затем вместо того, чтобы возвращать значение в RPG, я вставляю результат в этот файл и затем записываю его в IFS.
Но, похоже, в конце файла XML содержатся неверные данные, и он не может быть использован, есть идеи?
Обработка XML
D ResultXML S 32000A varying
........
/FREE
exec sql declare :ResultXml variable;
exec sql declare :SQLMESSAGE VARIABLE;
exec sql
SELECT
XMLSERIALIZE (content
xmlelement (NAME "Document",
xmlnamespaces(
DEFAULT 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02'
),
...
AS clob(1m) ccsid 37 INCLUDING XMLDECLARATION
as response
INTO :ResultXML
FROM csp40 t
Запись файла
... then we write it to the IFS
EVAL fd = open(%trimr(resp_file): 74 :511);
if fd=-1;
eval RC = perror(resp_file);
return;
endif;
EVAL rc = write(fd:%addr(ResultXML)+2:%len(ResultXML));
EVAL rc = close(fd);