进展4GL输出longchar到屏幕分割成块

问题描述:

我正在使用进度,并在数据库中有一个类型为longchar类型的字段。进展4GL输出longchar到屏幕分割成块

由于longchar类型不允许输入/输出函数,因此我无法输出内容。

有没有办法将longchar分成块,然后我可以存储为字符类型,所以我可以输出longchar的整个内容到屏幕上?

谢谢

有多种方法可以做到这一点。一种这样的方式如下。它将LONCHAR变量拆分为块,并将它们分块显示。但是你应该记住,一个CHARACTER变量不能超过32000个字符(实际上略少于32000个字符),所以你不能将整个LONGCHAR存储到一个CHARACTER变量中并显示它。

DEF VAR l_var AS LONGCHAR. 
DEF VAR chunk_size AS INT64 INIT 30000. 
DEF VAR tot_size AS INT INIT 0. 

DEF VAR char_piece AS CHAR. 

COPY-LOB FROM FILE "myfile.txt" TO l_var. 

DO WHILE tot_size < LENGTH(l_var): 
    char_piece = SUBSTR(l_var,1,chunk_size,"character"). 
    MESSAGE char_piece. 
    tot_size = tot_size + chunk_size. 
END. 

据我所知,数据库中不能有LONGCHAR字段。

+0

您可以在数据库中拥有BLOB/CLOB域,并且它们在ABL中的对应域可能是LONGCHAR。 – Jensd

+0

是的,我的领域是blob/clob ...谢谢 – progress

您可以实际输出LONGCHARS。我可能不实际(取决于变量的内容),但可以完成。

在基本的ABL中,你可以用“view-as editor large”来显示一个longchar - 然后你需要设置行数和宽度的字符数。

DEFINE VARIABLE c AS LONGCHAR NO-UNDO. 

c = FILL("a", 20000). 

DISPLAY c VIEW-AS EDITOR LARGE INNER-LINES 60 INNER-CHARS 100 WITH FRAME f1 WIDTH 120. 

在WEBSPEED可以输出一个LONGCHAR到webstream容易使用{& OUT-LONG}预处理器。

{&OUT-LONG} variableName.