进展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字段。
答
您可以实际输出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.
您可以在数据库中拥有BLOB/CLOB域,并且它们在ABL中的对应域可能是LONGCHAR。 – Jensd
是的,我的领域是blob/clob ...谢谢 – progress