以下の2つの方法で、32k以上のデータを1回のReadLine()で取得することができます。
※LONGSTRING有効は、Caché 2007.1以降の新機能になり、最大文字数が360 万文字まで拡張されるため、32K以上のデータを1回のReadLine()で取得することができます。
設定は、管理ポータルの以下のメニューで設定します。
【バージョン2007.1】: [構成] > [Advanced Settings] > [Miscellaneous] > EnableLongStrings を有効
【バージョン2008.1】: [構成] > [メモリと開始設定] Long String有効にチェック
【バージョン2011.1~】: [システム管理] > [構成] > [システム構成] > [メモリと開始設定] > Long String有効:にチェック
※LONGSTRINGを有効にし、32K以上のデータ長の変数を多く保持するとメモリを多く消費しますのでご注意ください。
ReadLineIntoStream() メソッドを使用したサンプルは以下になります。
set file="c:\temp\test.txt"
set stream = ##class(%Library.FileCharacterStream).%New()
set stream.Filename = file
set i=1
while (stream.AtEnd'=1) {
set line = stream.ReadLineIntoStream() // $CHAR(13,10)まで読み込み
// 1行を1024ずつ格納する
while (line.AtEnd'=1) {
set ^test(i)=line.Read(1024)
set i=i+1
}
}
quit
また、サンプルで使用するファイルを作成するコマンドは以下になります。
set file="c:\temp\test.txt"
set $p(data,"A",32767)="A"
set $p(data1,"B",32767)="B"
open file:"NWU"
use file w data,data,!,data1,data1
close file