Skip to main content

ネームスペースへのマッピングの追加

ネームスペースの構成の一部として、同じシステムまたは異なるシステムに存在する、他のデータベースのグローバル、ルーチン、およびクラス・パッケージをマップすることもできます。

これによって、さまざまな場所に存在するデータを、簡単に参照できるようになります。グローバル全体でも一部でもマップできます。これによって、データはディスクを簡単に行き来できます。

Note:

マッピングはアルファベット順に並べ替えられ、添え字が指定されている場合は、名前と添え字を基準にして並べ替えられます。詳細は、"グローバルについての正式な規則" を参照してください。

Important:

マップされたコンテンツの識別子がローカル・コンテンツ (パッケージ、クラス、グローバル、またはルーチン名) と同じ場合、ローカル・コンテンツではなくマップされたコンテンツが表示されます。そのため、マッピングが既存のコンテンツから切り離されないよう、マッピングはできる限り具体的にする必要があります。

コンテンツを命名したり、マッピングを作成する際は、不要な競合を避けるため、必ず "識別子のルールとガイドライン" に従ってください。

グローバル・マッピング

グローバルおよびグローバル・サブスクリプト・レベルで、ネームスペースに新規グローバルのマッピングを追加し、そのマッピングをそのネームスペースのグローバルに対する既定のデータベース・マッピングよりも優先させるようにできます。

  1. [ネームスペース] ページに移動して ([システム管理][構成][システム構成][ネームスペース])、グローバルをマッピングするネームスペースの行で [グローバルマッピング] をクリックします。

  2. [グローバルマッピング] ページで、[新規] をクリックします。

  3. グローバルが配置されるデータベースの [グローバル・データベースの位置] を選択します。

  4. [グローバル名] を入力します。ABC* のようにグローバル名の一部として * 文字を使用すると、複数のグローバルを指定できます。

  5. [マップするグローバルサブスクリプト] を入力します。添え字参照は開き括弧で始まる必要があります。以下はその例です。

    (1)
    ("A")
    (1):(5)
    ("A"):("Z")
    ("B",23,"m"):("E",5)
    (BEGIN):("X")
    ("Y"):(END)
    
    Note:

    範囲 (例 : ("A"):("Z")) を指定する場合、指定された添え字の範囲は “~から、~以内” ではなく “~から、~未満” になります。つまり、定義された添え字範囲の下限は含まれますが、上限は含まれないことになります。例えば、Name (1):(10) の場合、Name (1) は含まれますが、Name (10) は含まれません。範囲の上限を除外することによって、添え字の範囲を Name ("a"):("b") のように指定して処理すると、Name ("aa") および Name ("aaaaa") を含め Name ("b") の直前までを有効範囲とする上限境界を指定できます。

    予約語 BEGIN および END を使用して、使用可能な先頭および最後の添え字を示すことができますが、グローバルの添え字は個別にマッピングする必要があるため、添え字のあるグローバルで アスタリスク (*) を使用することはできません。

    添え字レベルのマッピング (SLM) の範囲に関する詳細は、"Setting Up Global Mappings" を参照してください。

  6. [詳細] をクリックすると、以下のオプションが表示されます。

    1. [照合] を選択します。照合は新規添え字レベルのマッピング・グローバルのみに適用されます。

    2. [ロックデータベース位置] を選択します。詳細は、"構成パラメータ・ファイル・リファレンス" の "[Map]" セクションの "Global" を参照してください。

  7. [OK] をクリックします。

    Note:

    新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。

  8. マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。

Important:

既存のグローバルのデータベースの場所を変更するマッピングを追加することもできますが、これは実際にはグローバルを移動させません。グローバルは元のデータベース内にあるものの、ネームスペースはそのグローバルを新しくマップされたデータベース内で見つけようとするため、結果としてグローバルはアクセスできなくなります。既存のグローバルの新規マッピングを成功させるには、グローバルを手動で再配置する必要があります。これは例えばターミナルや管理ポータルを使用して、グローバルを新規データベース上で作成し、元のデータベースから削除することで実行します。

ルーチン・マッピング

ルーチン・レベルでネームスペースにマッピングを追加すると、そのマッピングでそのネームスペースのルーチンに対する既定のデータベース・マッピングをオーバーライドできます。

  1. [ネームスペース] ページに移動して ([システム管理][構成][システム構成][ネームスペース])、グローバルをマッピングするネームスペースの行で [ルーチンマッピング] をクリックします。

  2. [ルーチンマッピング] ページで、[新規] をクリックします。

  3. ルーチンが配置される [ルーチン・データベースの場所] のデータベースを選択します。

  4. [ルーチン名] を入力します。このルーチンは、マッピングの時点で存在していなくてもかまいません (つまり、これから作成するルーチンの名前を使用できます)。

  5. [OK] をクリックします。

    Note:

    新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。

  6. マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。

例えば、前出のテスト・ネームスペース・マッピングを例にして考えてみましょう。airports データベース (FlightSchedule ネームスペース内) でスケジュール・ルーチン (例えば BOSZZairline) を作成し、TravelAgent ネームスペースのユーザに利用を許可する計画がある場合、[ルーチンマッピング] ページ (TravelAgent ネームスペース行) に移動して、[新規ルーチンマッピング] をクリックします。下図の [ルーチン・マッピング] ダイアログ・ボックスに情報を入力します。

Important:

1 つ以上のルーチンをマップするときには、それらのルーチンが必要とするすべてのコードとデータを必ず特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを確認します。マップされるルーチンは、以下の項目に依存している可能性があります。

  • インクルード・ファイル

  • その他のルーチン

  • クラス

  • テーブル

  • グローバル

追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。

パッケージ・マッピング

クラス・パッケージ・マッピングを追加すると、特定のデータベースのパッケージにあるすべてのクラス (および、それらのクラスの生成されたすべてのルーチン) を、別のネームスペースから認識できるようになります。

  1. [ネームスペース] ページに移動して ([システム管理][構成][システム構成][ネームスペース])、パッケージをマッピングするネームスペースの行で [パッケージマッピング] をクリックします。

  2. [パッケージマッピング] ページで、[新規] をクリックします。

  3. パッケージが配置される [パッケージデータベース位置] のデータベースを選択します。

  4. [パッケージ名] を選択します。このパッケージは、マッピングの際に存在していなくてもかまいません (つまり、作成を計画しているパッケージの名前を使用できます)。新規パッケージ名を指定する手順は以下のとおりです。

    1. [新規パッケージ] をクリックします。

    2. [新規パッケージ名] テキスト・ボックスに名前を入力します。

  5. [OK] をクリックします。

    Note:

    新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。

  6. マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。

パッケージの説明とそのマッピング手順については、"パッケージ・マッピング" を参照してください。

Important:

パッケージをマップするときには、そのパッケージ内のクラスが必要とするすべてのコードとデータを特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを必ず確認します。マップされるクラスは、以下の項目に依存している可能性があります。

  • インクルード・ファイル

  • ルーチン

  • その他のクラス

  • テーブル

  • グローバル

追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。

InterSystems IRIS は、1 つの動作ですべてのネームスペースにわたって同じパッケージを使用できるようにする機能を備えています。

すべてのネームスペースへのマッピング

グローバル、ルーチン、およびパッケージは、特定のネームスペースにマッピングされるだけではなく、すべてのネームスペースにマッピングすることもできます。この形式のマッピングを有効にするには、以下を行います。

  1. まず、%ALL という名前のネームスペースを作成します ("ネームスペースの作成/変更" を参照)。

    Note:

    %ALL は、データのマッピング時以外は表示されません。つまり、これは現実のネームスペースではなく、すべてのネームスペースにデータをマッピングするための機能です。

  2. 次に、%ALL ネームスペースで目的のマッピングを行います ("ネームスペースへのグローバル、ルーチン、およびパッケージ・マッピングの追加" を参照)。

これらの %ALL マッピングは、すべてのネームスペースに適用されます。%ALL ネームスペースでマップされているリソースに対する、ネームスペース固有のマッピングを作成することはできません。%ALL のマッピングが、同じリソースへのすべてのネームスペース固有のマッピングをオーバーライドするためです。

Caution:

%ALL のマッピングは、%SYS を含むすべてのネームスペースに適用されます。インスタンスが使用するルーチンまたはグローバルを上書きするマッピングを作成すると、特定の機能が壊れる可能性があります。

%ALL を使用する場合、マッピングはできる限り限定的にする必要があります。また、"識別子のルールとガイドライン" に厳格に従ってください。特に、"回避する必要があるグローバル変数名" にリストされたグローバルに対して %ALL のマッピングを作成しないでください。

%ALL ネームスペースに添え字レベルのマッピングを作成する場合、ルート・グローバルのマッピングが %DEFAULTDB に自動的に作成されます。%DEFAULTDB 変数は、任意のネームスペースの既定のデータベースを表します。

関連項目

FeedbackOpens in a new tab