命名セレクションは、複数のセレクションを同時に扱う簡単な方法を提供します。命名セレクションはプロセス中における、テーブルレコードの並び順付きリストです。この並び順付きリストに名前を付けてメモリに保持することができます。命名セレクションによって簡単にセレクションをメモリに置くことができます。命名セレクションはセレクションの並び順とカレントレコードをメモリに保持する簡単な手段を提供します。
以下のコマンドを使い、命名セレクション用いた作業を行うことができます:
命名セレクションは、COPY NAMED SELECTION、CUT NAMED SELECTIONまたはCREATE SELECTION FROM ARRAYコマンドで作成することができます。一般的に命名セレクションは、1つ以上のセレクションを用いて作業を行ったり、ソート済みのセレクションを保存して後で取り出したりするために使用します。プロセス内の各テーブルに対して複数の命名セレクションを持つことができます。命名セレクションをカレントセレクションとして再利用するには、USE NAMED SELECTIONを呼び出します。命名セレクションでの作業が終了したら、CLEAR NAMED SELECTIONを呼び出します。
Note: SET QUERY DESTINATION(Into named selection;namedselection) と (QUERYなどの) 検索コマンドを組み合わせても、命名セレクションを作成できます。詳細はSET QUERY DESTINATIONコマンドの説明を参照してください。
命名セレクションのスコープにはローカル、プロセス、インタープロセスがあります。
名前がドル記号 ($) で始まっている場合、命名セレクションはローカルです。名前が記号で始まっていない場合、それはプロセス命名セレクションです。名前が小なり大なり記号 (<>) で始まっている場合、それはインタープロセス命名セレクションです。
インタープロセス命名セレクションのスコープは、インタープロセス変数のそれと同じです。インタープロセス命名セレクションはすべてのプロセスからアクセス可能です。
4Dのリモートモードと4D Serverでは、インタープロセス命名セレクションはそれが作成されたマシン上のプロセスでのみ利用できます。インタープロセス命名セレクションを他のマシンから利用することはできません。
プロセス命名セレクションは、それが作成されたプロセス内およびサーバ上でのみ利用できます。
ローカル命名セレクションは、それが作成されたプロセス内でのみ利用可能で、サーバからは見えません。
警告: 命名セレクションを作成するには、テーブルのセレクションへのアクセスが必要となります。セレクションはサーバ上に保持され、ローカルプロセスはサーバデータへアクセスすることができないため、ローカルプロセス内で命名セレクションを使用してはいけません。
以下の表は、スコープと作成された場所に基づき、命名セレクションがどの範囲で利用可能であるかの原則を説明しています:
![](../../picture/25556/pict25556.ja.png)
セットと命名セレクションとの違いは、以下の通りです:
- 命名セレクションがレコードの並び順付きリストであるのに対して、セットは並び順を保持しません。
- セットは、テーブル内の各レコードに対して1ビットしか必要としないためメモリの面から見ると効率的です。命名セレクションは、セレクション内の各レコードに対して4バイトを必要とします。
- セットと違い、命名セレクションをディスクへ保存することはできません。
- セットには交差、結合、差異といった標準演算があるのに対して、命名セレクションは他の命名セレクションとの組み合わせ操作は行えません。
命名セレクションとセットには以下のような類似点があります:
- セットと同じように命名セレクションもメモリ上に存在します。
- 命名セレクションもセットもレコードの参照を格納します。レコードを変更または削除すると、命名セレクションやセットは無効になることがあります。
- セットと同じように命名セレクションは、その命名セレクションが作成された時点のカレントレコードを“記憶”します。