Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

EnableLongStrings

長い文字列に対して大きなスタック空間を使用可能にするかどうかを設定します。

Synopsis

[Miscellaneous]    EnableLongStrings=n

説明

Caché では、文字列操作の結果を保存するために、一定容量を持つ領域が割り当てられます。この領域は文字列スタックと呼ばれます。割り当てられた容量を超える文字列式が発生すると、<STRINGSTACK> エラーとなります。

文字列スタックのサイズを大幅に増やす場合は、EnableLongStrings 設定を必要に応じて使用できます。値は 1 または 0 です。

  • 既定値。1 (True) の場合、Caché で最大文字列のエラーは発生せず、長い文字列が使用されます。実際の長い文字列値に割り当てられるメモリは、bbsiz パラメータで設定されている制限の影響を受けず、プロセスの $STORAGE 値に影響を与えません。メモリが事前に割り当てられているプラットフォームの場合、7 MB および 14 MB (8 ビット Unicode) 以内においてこれは重要になります。

  • 0 (False) の場合、このオプションは使用できません。

長い文字列を有効にすると、より大きい固定サイズの文字列スタックが割り当てられた状態で各プロセスが開始されます。 文字列スタックは、コマンド実行時に一時的に文字列を処理するためのものです。 実際に長い文字列を変数に格納する場合は、新しいメモリが割り当てられます (同一の長い文字列を格納する 2 つの変数が同一の malloc() により割り当てられたメモリを指すようにするための最適化があります (一方が変更されるまでの間))。 標準の文字列 (32 K 未満) を格納する場合は、長い文字列が有効であっても、プロセス・バディ・ブロック・メモリ (bbsiz、別名プロセスごとの最大メモリ) から割り当てられます。

プロセスで長い文字列を使用する場合は、その文字列に割り当てられるメモリは、パーティション・メモリではなく、malloc() から割り当てられます。 したがって、$STORAGE 値は影響を受けません。文字列が破棄されると、Caché は (free() を使用して) malloc() から長い文字列用に取得したメモリを解放します。これは、HPUX の場合では異なります。HPUX はメモリを解放しません。HPUX 上のプロセスは、free() 後もメモリを保持するため、そのメモリを後続の malloc() に使用できます。 そのメモリが再利用されなかった場合は、 (物理メモリの何らかの不足を想定して) HPUX メモリ・マネージャによって最終的にページ・アウトされます。

この設定の値は、値の変更後に開始された Caché ジョブのみに影響します。既存のジョブは影響を受けず、現在の文字列スタック・サイズが保持されます。

EnableLongStrings=0

値の範囲

0 または 1。既定値は 1 です。

管理ポータル

[システム管理] > [構成] > [システム設定] > [メモリと開始設定] ページに移動します。長い文字列のサポートを有効にするには、[Long String 有効] チェック・ボックスにチェックを付けます。サポートを無効にするには、チェック・ボックスのチェックを外します。

FeedbackOpens in a new tab