進捗状況を使用していて、データベースにlongchar型のフィールドがあります。進捗状況4GL出力のlongcharを画面に分割してチャンクに分割します
longchar型では入出力関数が使用できないため、出力できません。
longcharを分割してチャンクにして、char型として保存できるので、longcharの内容全体を画面に出力できますか?
ありがとうございました
進捗状況を使用していて、データベースにlongchar型のフィールドがあります。進捗状況4GL出力のlongcharを画面に分割してチャンクに分割します
longchar型では入出力関数が使用できないため、出力できません。
longcharを分割してチャンクにして、char型として保存できるので、longcharの内容全体を画面に出力できますか?
ありがとうございました
複数の方法があります。そのような方法の1つは次のとおりです。 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}プリプロセッサを使用して容易にwebstream LONGCHAR。
{&OUT-LONG} variableName.
データベース内にBLOB/CLOBフィールドを持つことができ、ABLの対応するフィールドはLONGCHARである可能性があります。 – Jensd
はい私のフィールドはBLOB/CLOBだった...ありがとう – progress