名前付きセレクション
概要
名前付きセレクションは、複数のセレクションを同時に操作するための簡単な手段を提供します。名前付きセレクションとは、プロセス内のテーブルに対するレコードの順序付きリストです。この順序付きリストには名前を付けてメモリ内に保持できます。名前付きセレクションは、セレクションの順序およびセレクションのカレントレコードをメモリ内に保持するためのシンプルな手段を提供します。
次のコマンドを使用して名前付きセレクションを操作できます:
COPY NAMED SELECTIONCUT NAMED SELECTIONUSE NAMED SELECTIONCLEAR NAMED SELECTIONCREATE SELECTION FROM ARRAY
名前付きセレクションは、COPY NAMED SELECTION、CUT NAMED SELECTION、および CREATE SELECTION FROM ARRAY を使用して作成します。名前付きセレクションは通常、1 つまたは複数のセレクションを操作するため、また順序付きセレクションを保存して後で復元するために使用されます。1 つのプロセス内で、テーブルごとに多数の名前付きセレクションを持つことができます。名前付きセレクションをカレントセレクションとして再利用するには、USE NAMED SELECTION を呼び出します。名前付きセレクションの使用が終わったら、CLEAR NAMED SELECTION を使用します。
SET QUERY DESTINATION(Into named selection;namedselection) ステートメントを検索コマンド(例:QUERY)と組み合わせることでも、名前付きセレクションを作成できます。SET QUERY DESTINATION コマンドの説明を参照してください。
名前付きセレクションは、ローカル、プロセス、またはインタープロセスのスコープを持つことができます。
名前付きセレクションは、その名前がドル記号で始まる場合にローカルとなります。名前がどの記号でも始まらない場合はプロセス名前付きセレクションであり、名前が (<>) 記号 — 「小なり」記号に続けて「大なり」記号 — で始まる場合はインタープロセス名前付きセレクションです。
インタープロセス名前付きセレクションのスコープは、インタープロセス変数(非推奨)のスコープと同一です。インタープロセス名前付きセレクションには、任意のプロセスからアクセスできます。4D のリモートモードおよび 4D Server では、インタープロセス名前付きセレクションは、それを作成したクライアントのプロセスに対してのみ利用可能です。インタープロセス名前付きセレクションは、他のクライアントマシンでは利用できません。 プロセス名前付きセレクションは、それが作成されたプロセス内およびサーバー上でのみ利用可能です。 ローカル名前付きセレクションは、それを作成したプロセスに対して定義され、サーバー上では表示されません。
名前付きセレクションの作成には、テーブルのセレクションへのアクセスが必要です。セレクションはサーバー上に保持され、ローカルプロセスはサーバーデータにアクセスできないため、ローカルプロセス内では名前付きセレクションを使用しないでください。
名前付きセレクションの可視性
次の表は、名前付きセレクションのスコープおよび作成された場所に応じた可視性の原則を示しています:
| クライアントプロセス | 同一クライアント上の他のプロセス | 他のクライアント | サーバープロセス | サーバー上の他のプロセス | |
|---|---|---|---|---|---|
| クライアントプロセスでの作成 | |||||
| $test | X | ||||
| test | X | X(Trigger) | |||
| <>test | X | X | |||
| サーバープロセスでの作成 | |||||
| $test | X | ||||
| test | X | ||||
| <>test | X | X |
名前付きセレクションとセット
セット と名前付きセレクションの相違点は次のとおりです:
- 名前付きセレクションはレコードの順序付きリストですが、セットはそうではありません。
- セットはファイル内の各レコードにつき 1 ビットしか必要としないため、メモリ効率が非常に高いです。名前付きセレクションは、セレクション内の各レコードにつき 4 バイトを必要とします。
- セットとは異なり、名前付きセレクションはディスクに保存できません。
- セットには標準の
INTERSECTION、UNION、DIFFERENCE操作がありますが、名前付きセレクションは他の名前付きセレクションと組み合わせることはできません。
名前付きセレクションとセットの類似点は次のとおりです:
- セットと同様に、名前付きセレクションはメモリ内に存在します。
- 名前付きセレクションとセットは、レコードへの参照を格納します。レコードが変更または削除されると、名前付きセレクションまたはセットは無効になることがあります。
- セットと同様に、名前付きセレクションは、名前付きセレクションが作成された時点でのカレントレコードを「記憶」します。