2016-03-17 3 views
1

при копировании значения MEMPTR в переменную LONGCHAR с использованием GET-STRING, я получил ошибку 9324. Есть ли решение?Как скопировать MEMPTR в/из переменной LONGCHAR без получения ошибки или значения NULL?

Я попытался это:

function x returns longchar(): 
    DEF VAR i_xml_string AS LONGCHAR NO-UNDO. 
    DEF VAR i_mem  AS MEMPTR NO-UNDO. 
    p_doc:SAVE("memptr":U, i_mem). 
    COPY-LOB FROM i_mem TO i_xml_string. 
    return i_xml_string. 
end. 

Но получил следующие ошибки:

[16/03/17 @ 10: 20: 58.984-0700] P-009824 T-000001 3 4GL 4GLTRACE Возврат из ConvertXmlDocToLongString "" [yeai/ye508mu.p] [16/03/17 @ 10: 20: 58.984-0700] P009824 T-000001 1 4GL - (Процедура: «GenerateT5008xmlCusipSummaryRecordyeai/ye508mu.p» Линия: 2536) Попытка превысить максимальный размер переменной CHARACTER. (9324) [16/03/17 @ 10: 20: 58.984-0700] P-009824 T-000001 1 4GL - (Процедура: «GenerateT5008xmlCusipSummaryRecord yeai/ye508mu.p»: 2536) ** Невозможно оценить выражение для оператора PUT. (564) [16/03/17 @ 10: 20: 58.984-0700] P009824 Т-000001 3 4GL 4GLTRACE Возвращение из GenerateT5008xmlCusipSummaryRecord "? Tmp_cusip_tots да" [yeai/ye508mu.p]

ответ

1

Get-СТРОКА работает на обычных символьных строках. Они ограничены по размеру примерно до 31 000 байт. Используйте COPY-LOB для получения данных MEMPTR в и из LONGCHAR.

Что-то вроде:

copy-lob from my_memptr to my_longchar. 

PUT также ограничивается обычными строками CHAR. Если вы хотите работать с LONGCHAR и MEMPTR, вам нужно использовать COPY-LOB.