通过将 4GL 输出 longchar 分成块来进行屏幕显示

Progress 4GL output longchar to screen by splitting it up into chunks

我正在使用 progress 并且在数据库中有一个 longchar 类型的字段。

我无法输出内容,因为 input/output longchar 类型不允许使用函数。

有没有办法将 longchar 分成块,然后我可以将其存储为 char 类型,以便将 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 中,您可以使用 {&OUT-LONG} 预处理器轻松地将 longchar 输出到网络流。

{&OUT-LONG} variableName.