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 に答える