前のページ|次のページ

CATNAMEステートメント

複数のカタログをカタログ参照名(ショートカット名)に関連付け、1つのカタログに論理的に結合します。また、1つまたはすべてのカタログ参照名をクリアします。1つの連結またはすべての連結に含まれる連結カタログをリストします。

該当要素: 任意の場所
カテゴリ: データアクセス

構文

引数

libref

割り当て済みのSASライブラリ参照名です。ライブラリ参照名を指定しない場合、WORKライブラリにあるカタログを、指定のカタログ参照名を使用して連結します。

制限事項 ライブラリ参照名は事前に割り当てる必要があります。

catref

ステートメントに指定するカタログまたはカタログ連結に対する、重複しないカタログ参照名です。libref.catrefのように、ライブラリ参照名とカタログ参照名はピリオドで区切ります。このカタログ参照名には、任意のSAS名を使用できます。

catalog

カタログ連結に使用できるカタログ名です。

オプション

CLEAR

現在割り当てられているcatrefまたはlibref.catrefの関連付けを取り消します。

ヒント 特定のcatrefまたはlibref.catrefを指定すると、1つの連結からその関連付けを取り消します。_ALL_ CLEARを指定すると、現在割り当てられているすべてのcatrefまたはlibref.catrefの関連付けを取り消します。

_ALL_ CLEAR

現在割り当てられているすべてのcatrefまたはlibref.catrefの連結を取り消します。

LIST

指定した連結に含まれるカタログ名をSASログに書き込みます。

ヒント catref またはlibref.catref を指定すると、1つの連結の属性を書き込めます。_ALL_を指定すると、現在のセッションにあるすべてのカタログ連結の属性を書き込めます。

_ALL_ LIST

現在のカタログの連結に含まれているすべてのカタログ名をSASログに書き込みます。

ACCESS=READONLY

カタログに読み取り専用属性を割り当てます。この属性を割り当てると、ユーザーはカタログエントリを読み取ることはできますが、情報の更新や新しい情報の書き込みは実行できません。

詳細

CATNAMEを使用する理由

CATNAMEを使用すると、1つのカタログ参照名(libref.catrefまたはcatref)を指定することによって、複数のカタログ内のエントリにアクセスできるので便利です。カタログ連結を作成すると、単純な(連結されていない)カタログ参照名を使用できるコンテキストであればカタログ参照名を指定できます。

カタログ連結のルール

カタログ連結を効果的に使用するには、連結カタログ間でのカタログエントリの検索ルールを理解する必要があります。
  • 入力や更新を行うためにカタログエントリを開く場合、連結カタログが検索され、最初に検索された指定エントリが使用されます。
  • 出力するためにカタログエントリを開く場合、カタログエントリは連結に最初にリストされたカタログ内に作成されます。
    注: 連結の他のカタログに同じ名前のエントリが存在する場合でも、新しいエントリは最初のカタログの中に作成されます。
    注: 連結の最初のカタログを更新するために開く際にこのカタログが存在しない場合、存在する連結の次のカタログに書き込まれます。
  • カタログエントリの削除や名前の変更を行う場合、最初に検出されたエントリにのみ影響します。
  • カタログエントリのリストを表示する場合、カタログエントリ名は常に1つだけ表示されます。
    注: 連結内に同じ名前が複数存在する場合でも、最初に検索されたエントリのみが表示されます。

比較

  • CATNAMEステートメントは、カタログのLIBNAMEステートメントとも言えます。LIBNAMEステートメントを使用するとSASライブラリにショートカット名を割り当てることができるため、ショートカット名を使用して、ファイルを検索して、ファイル内のデータを使用できます。CATNAMEを使用すると、1つまたは複数のカタログに短縮名<libref.>catref (librefは任意)を割り当てることができるので、SASではこれらのカタログを検索して、各カタログのすべてまたは一部のエントリを使用できます。
  • CATNAMEステートメントでは、明示的にSASカタログが連結されます。LIBNAMEステートメントでは、暗示的にSASカタログが連結されます。

例1: カタログ連結の割り当てと使用

複数のSASカタログに含まれるエントリにアクセスする必要があるとします。情報にアクセスする最も効率的な方法は、カタログを論理的に連結することです。カタログを連結すると、新たに、サイズの大きいカタログを別に作成することなく情報にアクセスできます。
連結対象のカタログを含むSASライブラリに対してライブラリ参照名を割り当てます。
libname mylib1 'data-library-1';
libname mylib2 'data-library-2';
 
論理的に連結するカタログのリストに対してカタログ参照名を割り当てます。この名前には有効なSAS名を指定します。
 catname allcats (mylib1.catalog1 mylib2.catalog2);
SASログには次のメッセージが表示されます。
CATNAMEステートメント実行後のログ出力
NOTE:Catalog concatenation WORK.ALLCATS has been created.
ライブラリ参照名が指定されていないため、ライブラリ参照名はデフォルトでWORKに設定されます。これらのカタログのいずれかにあるカタログエントリにアクセスする場合、元のライブラリ参照名とカタログ名ではなく、ライブラリ参照名WORKとカタログ参照名ALLCATSを使用します。たとえば、カタログMYLIB1.CATALOG1にあるAPPKEYS.KEYSというカタログエントリにアクセスするには、次のように指定します。
work.allcats.appkeys.keys

例2: ネストされたカタログ連結の作成

連結カタログを作成した後、CATNAMEを使用して他の1つのカタログ、または他の連結されたカタログと現在の連結を結合することができます。ネストされたカタログ連結では、1つのカタログ参照名を使用して複数の異なるカタログの組み合わせにアクセスできるので便利です。
libname local 'my_dir';
libname main  'public_dir';
catname private_catalog (local.my_application_code
                         local.my_frames 
                         local.my_formats);
catname combined_catalogs (private_catalog
                         main.public_catalog);
前述の例では、PRIVATE_CATALOGを使用すると、個人用のアプリケーションエントリのコピーで作業することができます。パブリック版のアプリケーションと連結した場合にエントリがどのように動作するか確認する場合は、COMBINED_CATALOGSを使用できます。

関連項目:

前のページ|次のページ|ページの先頭へ