Работа с LONGCHAR
Переменная LONGCHAR состоит из данных CHARACTER, но, в отличие от типа CHARACTER, размер этого типа не ограничен 32 КБ. Переменная LONGCHAR может быть больше, но она может быть ограничена доступной памятью. Вы можете использовать многие возможности обработки символов ABL со строками LONGCHAR. Тип данных LONGCHAR имеет связанные с ним метаданные для обозначения его кодовой страницы и другой информации. Исходным значением по умолчанию для переменной LONGCHAR является пустая строка (“”).
ABL имеет другой тип данных, известный как Character Large Object (CLOB). Поле CLOB — это таблица базы данных или поле временной таблицы, которое содержит ссылку, указывающий на связанные данные CLOB, хранящиеся в базе данных. Вы не можете напрямую манипулировать данными CLOB. Вместо этого вы должны скопировать CLOB в LONGCHAR, чтобы манипулировать символьным содержимым поля CLOB в ABL. Вы можете сделать это с помощью оператора COPY-LOB.
Как и значения CLOB, значения LONGCHAR могут иметь любую кодовую страницу, поддерживаемую файлом OpenEdge convmap.p, и информация о кодовой странице сохраняется в LONGCHAR. ABL гарантирует, что все символы допустимы по отношению к кодовой странице LONGCHAR.
Отображение LONGCHAR
Поскольку переменные LONGCHAR имеют большой размер, вы не можете отображать значения напрямую. Однако есть несколько способов обойти это. Для более коротких переменных LONGCHAR вы можете присвоить LONGCHAR переменной CHARACTER, а затем отобразить переменную CHARACTER. Другой способ — использовать функцию STRING для преобразования значения в CHARACTER. Следующий пример кода демонстрирует эти способы:
VAR LONGCHAR str1 = "abcdefghijklmnopqrstuvwxyz". VAR CHAR str2. MESSAGE str1. // Results in an error /* Assign the LONGCHAR to a CHARACTER variable */ str2 = str1. MESSAGE str2. /* Use the STRING function */ MESSAGE STRING(str1).
Вы можете отобразить часть переменной LONGCHAR с помощью функции SUBSTRING , но вы все равно должны присвоить переменную LONGCHAR переменной CHARACTER. Поскольку входные данные функции SUBSTRING представляют собой LONGCHAR, её возвращаемое значение также является LONGCHAR, и вы не можете напрямую отобразить LONGCHAR. В следующем примере кода показано, как отобразить часть переменной LONGCHAR.
VAR LONGCHAR str1 = "abcdefghijklmnopqrstuvwxyz". VAR CHAR str2. MESSAGE SUBSTRING(str1,1,13,"CHARACTER"). // Results in an error /* Use the SUBSTRING function and assign it to a CHARACTER variable */ str2 = SUBSTRING(str1,1,13,"CHARACTER"). MESSAGE str2.
Вы также можете отобразить LONGCHAR, используя оператор DISPLAY с опцией VIEW-AS EDITOR LARGE. В следующем примере кода показано, как отобразить LONGCHAR с помощью этой опции. Обратите внимание, что вы должны указать количество строк и ширину строки в символах. Строка в следующем примере кода не превышает 32 КБ, но используется только для иллюстрации.
VAR LONGCHAR myLongchar = "Very long string...". DISPLAY myLongchar VIEW-AS EDITOR LARGE INNER-LINES 60 INNER-CHARS 100 WITH FRAME f1 WIDTH 120.
Для получения дополнительной информации см. следующие разделы: