DB2 сохраняет CLOB (>16 МБ) в IFS

Я пытаюсь сохранить содержимое поля (CLOB) в файл на IFS (iSeries).

Файл не существует до сохранения содержимого, и файл создается идеально, но я не знаю, почему в начале (всегда позиция 1 и 2) файл содержит два нечетных символа. Эти персонажи не всегда одинаковы.

Я думаю, что это проблема с преобразованием между полем clob и файлом (ifs - smtf) Кто-нибудь как решить эту проблему?

Заранее спасибо!!

PD.: Извините, я не могу прикрепить изображение, потому что мне нужно как минимум 10 репутации, чтобы публиковать изображения.


Определение переменной в RPGLE

D xmlEntrada      s                   sqltype(CLOB:10000000)

fd = open('/folder/file/file.xml': 
O_WRONLY+O_CREAT+O_TRUNC: 
O_RDWR : 819);                                                

callp write(fd: %addr(xmlEntrada)+2: %len(xmlEntrada));

person sigsag    schedule 29.11.2014    source источник
comment
вы можете опубликовать ссылку на сервис изображений ведра фотографий.   -  person carlodurso    schedule 29.11.2014
comment
drive.google.com/file/d/0B_3t1a8hlFj4T0lVQWhpMXh2NXM/   -  person sigsag    schedule 29.11.2014
comment
Нечетные символы: A перед первым тегом ‹SGA...   -  person sigsag    schedule 29.11.2014
comment
Два нечетных символа звучат как часть «длины» символьного поля переменной длины. Можете ли вы отредактировать вопрос, чтобы показать, как вы сохраняете CLOB?   -  person Buck Calabro    schedule 29.11.2014


Ответы (1)


В руководстве по RPG на английском языке это называется 'Length-Prefix '. Это 2 байта для переменной от 1 до 63353 байт и 4 байта для больших переменных. Измените запись () на:

write(fd: %addr(xmlEntrada: *DATA): %len(xmlEntrada));

и пусть компилятор определит размер префикса длины.

Если в более ранней версии, попробуйте

write(fd: %addr(xmlEntrada)+4: %len(xmlEntrada));
person Buck Calabro    schedule 29.11.2014
comment
Я пытался, но теперь у меня ошибка: *RNF0229 20 1 *DATA sólo es valido para %ADDR cuando la definición es un elemento de longitud variable; *ДАННЫЕ игнорируются. --› * DATA RNF0229 действителен только для %ADDR, когда определение является элементом переменной длины; * ДАННЫЕ игнорируются. - person sigsag; 30.11.2014
comment
Итак, вы используете более раннюю версию. Сделайте это %addr(xmlEntrada)+4 - person Buck Calabro; 30.11.2014
comment
Я трачу много часов, чтобы найти решение. Наконец-то я сделал альтернативу, спасибо за помощь. Я использую это решение. Спасибо еще раз!! - person sigsag; 30.11.2014
comment
@BuckCalabro Проголосовал и предложил отредактировать, чтобы включить ваш комментарий %addr() в ответ. - person user2338816; 18.12.2014