2

我在 4gl 模块中有以下代码:

DEFINE f_drec RECORD LIKE verhistd.*
DEFINE f_input
   RECORD
      long_desc LIKE verhistd.long_desc
   END RECORD
Let f_input.long_desc = f_drec.long_desc

其中 verhistd.long_desc 是 TEXT 数据类型。但是当我编译代码时,我得到了这个错误信息:

|
|      The variable "f_input.long_desc" is too complex a type to be used in an
| assignment statement.
| See error number -4323.

-4323 的错误消息只涉及数组和屏幕记录,而不是 TEXT 数据类型。

4

1 回答 1

2

我没有在我必须维护的任何 4gl 代码中使用 TEXT 数据类型,但是快速查看IBM 4GL By Example文档中有关 TEXT 字段的文档表明 4GL 将文本 blob 视为一种特殊情况并且不加载它们默认情况下,由于潜在的内存使用。

如果您查看示例 18 中的示例代码(对不起,他们现在只有 pdf 版本的在线文档),它应该为您提供了一个相当直接的示例,说明如何处理 TEXT blob。

因为 BLOB 列可以包含大量数据,所以 4GL 程序不会像为其他变量类型分配空间一样为 BLOB 变量分配空间。BLOB 变量不包含实际值,而是包含指向该数据存储位置的指针。这个位置可以在内存中,在程序创建的临时文件中,或者在程序员命名的指定文件中。LOCATE 语句使用 BLOB 值的位置初始化 BLOB 变量。

于 2012-07-25T17:57:50.007 回答