GT.Mグローバル・ディレクトリ・エディタ(GDE)は、グローバル・ディレクトリを作成、検査、および変更するためのユーティリティです。GDEはMで書かれたプログラムで、$gtm_dist/mumps -run ^GDE
を使ってシェルから呼び出すことができます。
GDEはMプログラムなので、DO ^GDE
を使ってGT.MプロセスからGDEを起動することもできます。もし DOを使用してGDEを起動し、そのプロセスによって現在開かれているグローバルのマップを変更する場合は、プロセスがHALTして、プロセスを再起動して修正されたマッピングを取得する必要があります。FISは、ユーザーが通常はシェルからGDEを実行することを期待しています - $gtm_dist/mumps -run GDE
。
GDEへの入力はコマンドファイルにすることができます。運用環境では、コマンドファイルを使用してデータベース構成を定義し、バージョン管理下に置くことを、FISは推奨します。
注意 | |
---|---|
グローバル・ディレクトリには、データベースの属性とマッピングルールが格納されます。プロセスはマッピング・ルールを使用して、どのデータベースファイルにグローバル変数ノードが含まれているかを判断します。MUPIP CREATEは、データベース属性を使用して新しいデータベースファイルを作成します。MUPIP CREATEでデータベース属性を適用してデータベースファイルを作成すると、GT.Mは、次のMUPIP CREATEまで属性を使用しません。もしMUPIP SET(またはDSE)を使用してデータベースファイルの属性を変更する場合は、後続のMUPIP CREATEに使用されるグローバルディレクトリに対して常に同等の変更を行います。逆に、もしGDEで属性を変更する場合は、MUPIP SETまたはDSEを使用して既存のデータベースファイルを明示的に変更する必要があります。 |
プロセス起動時に、環境変数 gtmgbldir は、プロセスのグローバルディレクトリを指定します。Mのアプリケーション・コードは、プロセスの起動時に $gtmgbldir から初期化される $ZGBLDIR 組み込み特殊変数を介して、グローバルディレクトリにアクセスして変更することができます。Mアプリケーションコードは、拡張グローバル参照である || または {} シンタックスも使用できます。
$gtmgbldir / $ZGBLDIRはパス名であることに注意してください。もし、それらパス名が "/" で始まらない場合、パス名は相対パスであり、GT.Mは現在の作業ディレクトリで始まるグローバルディレクトリを検索します。
プロセスによって使用されるグローバルディレクトリを変更するには、gtmgbldir の新しい値を指定します。
例:
$ export gtmgbldir=/home/jdoe/node1/prod.gld
GDEを起動し、gtmgbldir のグローバルディレクトリが存在しない場合、GDEは特定のニーズに合わせてグローバルディレクトリを構築するための出発点またはテンプレートである最小限のデフォルトグローバルディレクトリを作成します。
デフォルトのグローバルディレクトリを保持するには、変更を加えずにGDEを終了します。
例:
$ export gtmgbldir=/home/jdoe/node1/prod.gld
gtmgbldir からGDEとグローバルディレクトリが存在しないことを呼び出す時、GDEはデフォルトのグローバルディレクトリを生成します。そのグローバルディレクトリには必要なコンポーネントの最小セットとデータベース特性値が含まれてます。それは開発やテスト作業などを目的として使用することができます。デフォルトのグローバルディレクトリもまた、カスタム グローバルディレクトリの構築のためにスターティングポイントやテンプレートとしてサービスします。
デフォルトのグローバルディレクトリを保持するには、変更を加えずにGDEをQUITします。
例:
$ gtmgbldir=/usr/accntg/jones/mumps.gld $ export gtmgbldir $ $gtm_dist/mumps -dir GTM>do ^GDE %GDE-I-GDUSEDEFS, Using defaults for Global Directory /usr/accntg/jones/mumps.gld GDE> EXIT %GDE-I-VERIFY, Verification OK %GDE-I-GDCREATE, Creating Global Directory file /usr/accntg/jones/mumps.gld
マッピングは、グローバル変数名またはサブツリーまたは添字範囲をデータベースファイルに接続するプロセスです。
完全なマッピングには次の4つのコンポーネントがあります:
名前(NAME)
領域(REGION)
セグメント(SEGMENT)
ファイル
これらのコンポーネントは任意の順序で定義できますが、最終的な結果は名前(NAME)からファイル(FILE)へ完全な論理パスでなければなりません:
NAME(s) ---> REGION ---> SEGMENT ---> FILE
デフォルトのグローバルディレクトリは、名前(NAME)、領域(REGION)、セグメント(SEGMENT)、ファイル(FILE) のこれらのエントリで構成され1つの完全なマッピングを含みます。
* ---> DEFAULT ---> DEFAULT ---> mumps.dat (NAME) (REGION) (SEGMENT) (FILE)
アスタリスク "*" ワイルドカードは可能なすべてのグローバルの名前(NAMEs)を識別します。 続いての編集では、個々のグローバル名または名前の接頭辞のためにエントリを作成します。
領域(REGIONs)とセグメント(SEGMENTs)はファイルの作成を制御するために使用される情報を格納します。データベースファイルの作成がCREATEコマンドを使っている時にのみ、領域(REGION)とセグメント(SEGMENT)を保管する特性はMUPIPに渡されます、ですので引き続いて、グローバルディレクトリ上のこれらの特性への変更は既存の1つのデータベースには効果がありません。
EXITでは、GDEはすべての有効なグローバル変数のノードが正確に1つの領域にマップされるようにグローバルディレクトリを検証します; すべての領域(Region)に少なくとも1つのグローバル変数ノードがマッピングされており、それが正確に1つのセグメントにマップされていること; すべてのセグメントには1つの領域(Region)がマッピングされていること; 各領域(Region)およびセグメントの属性が内部的に一貫していることが必要です。GDEは構造的に不健全なグローバルディレクトリを作成せず、グローバルディレクトリを検証するまで終了しません。情報メッセージは、構造的な不一致を通知します。
グローバルディレクトリは次のようになります:
*** TEMPLATES *** Std Inst Def Rec Key Null Null Freeze Qdb Region Coll Size Size Subs Coll Jnl on Error Rndwn ---------------------------------------------------------------------------------------------------- <default> 0 4080 255 NEVER Y Y DISABLED DISABLED Jnl File (def ext: .mjl) Before Buff Alloc Exten AutoSwitch ------------------------------------------------------------------------------------------ <default> <based on DB file-spec> Y 2308 2048 2048 8386560 Segment Active Acc Typ Block Alloc Exten Options ------------------------------------------------------------------------------ <default> * BG DYN 4096 5000 10000 GLOB =1000 LOCK = 40 RES = 0 ENCR = OFF MSLT =1024 <default> MM DYN 4096 5000 10000 DEFER LOCK = 40 MSLT =1024 *** NAMES *** Global Region ------------------------------------------------------------------------------ * DEFAULT *** REGIONS *** Std Inst Dynamic Def Rec Key Null Null Freeze Qdb Region Segment Coll Size Size Subs Coll Jnl on Error Rndwn -------------------------------------------------------------------------------------------------------------------------- DEFAULT DEFAULT 0 4080 255 NEVER Y Y DISABLED DISABLED *** JOURNALING INFORMATION *** Region Jnl File (def ext: .mjl) Before Buff Alloc Exten AutoSwitch -------------------------------------------------------------------------------------------------------- DEFAULT $gtmdir/$gtmver/g/gtm.mjl Y 2308 2048 2048 8386560 *** SEGMENTS *** Segment File (def ext: .dat)Acc Typ Block Alloc Exten Options ------------------------------------------------------------------------------------------- DEFAULT $gtmdir/$gtmver/g/gtm.dat BG DYN 4096 5000 10000 GLOB=1000 LOCK= 40 RES = 0 ENCR=OFF MSLT=1024 *** MAP *** - - - - - - - - - - Names - - - - - - - - - - From Up to Region / Segment / File(def ext: .dat) -------------------------------------------------------------------------------------------------------------------------- % ... REG = DEFAULT SEG = DEFAULT FILE = $gtmdir/$gtmver/g/gtm.dat LOCAL LOCKS REG = DEFAULT SEG = DEFAULT FILE = $gtmdir/$gtmver/g/gtm.dat
そこにはクローバルディレクトリに5つの主要なセクションがあります:
テンプレート(TEMPLATES)
名前(NAMES)
領域(REGIONS)
セグメント(SEGMENTS)
マップ(MAP)
グローバルディレクトリ内の各セクションの機能は、以下のように説明されます:
テンプレート(TEMPLATES)
グローバル・ディレクトリのこのセクションは、領域(region)またはセグメント定義の一部として、GT.Mに渡されるすべてのデータベースまたはファイルパラメータのデフォルト値を提供します。GDEはこれらに必要な値の1つが明示的に定義されていない領域(REGION)やセグメント(SEGMENT)の定義を完全なものにするためにテンプレートを使用します。
新しいグローバルディレクトリを作成する時に、GDEは初期デフォルト値を提供します。 次にテンプレート(TEMPLATE)コマンドで適切な -REGION または -SEGMENTの修飾子を使用して任意の値を変更ができます。
名前(NAMES)
Mプログラムは、モノリシックなグローバル変数の名前空間を見ます。グローバルディレクトリのNAMESセクションは、グローバル名またはサブスクリプト範囲を持つグローバル名が異なるデータベースファイルに存在するように名前空間を分割します。Mグローバルは、1つ以上のデータベースファイルに存在することができ、各データベースファイルは多数のMグローバルを格納することができます。
領域(REGIONS)
領域(REGION)セクションはグローバルディレクトリ内のすべての領域(REGIONs)をリストします。各領域(Region)は、Mのグローバル変数またはノードのセットに対する共通の特性を定義します。したがって、NAMESセクションの複数の名前セットが単一の領域(Region)にマップされます。
個々の領域(REGION)を作成または変更した時は、適切な修飾子を指定してこれらの値を割り当てます。もし特定のパラメータの値を指定しない場合、GDEはテンプレート(TEMPLATES)セクションからデフォルト値を割り当てます。
セグメント(SEGMENTS)
グローバルディレクトリのこのセクションは、現在定義されたセグメントをリストします。領域(REGION)がグローバル変数のプロパティを指定している間に、セグメント(SEGMENT)はファイルのプロパティを指定します。領域(REGIONs)とセグメント(SEGMENTs)の間に一対一のマッピングがあります。個々のセグメント(SEGMENTs)を作成または変更する時は、適切な修飾語句を指定することによってこれらの値を割り当てます。もし特定のパラメータの値を指定しない場合、GDEはテンプレート(TEMPLATES)セクションからデフォルト値を割り当てます。
マップ(MAP)
グローバルディレクトリのこのセクションはファイルへのセグメントへの領域への名前の現在のマッピングを示します。デフォルトのグローバルディレクトリには、このセクションに2つの行があります: 1つはすべてのグローバルの宛先を指定し、もう1つはローカル変数名を持つM LOCKリソースを指定します。もし新しいマッピングコンポーネントの定義(すなわち、新しい名前(Names)、領域(Regions)、またはセグメント(Segments))を追加する場合は、このセクションではそのマッピングの現ステータスを表示します。マッピングのいくつかのコンポーネントは、"NONE" を表示する定義が現在されていません。なぜならGDEは定義されているマッピングのすべての要素が必要なので、すべてのマッピングが完了するまで、グローバルディレクトリを、終了:EXIT(と、保存:save)ができなくなります。
GDEはグローバルディレクトリの出力を表示するには、次の略語を使用しています。次のリストは、関連する修飾子を使用してグローバルディレクトリの省略形を示しています。個々の修飾子の機能の説明については、"GDEコマンドの概要"を参照してください。
Abbreviation Full Form Acc ACCESS_METHOD Alloc ALLOCATION AutoSwitch AUTOSWITCHLIMIT Block BLOCK_SIZE Buff BUFFER_SIZE Def Coll COLLATION_DEFAULT Exten EXTENSION_COUNT File FILE_NAME GLOB GLOBAL_BUFFER_COUNT Inst Freeze On Error INST_FREEZE_ON_ERROR JNL JOURNAL KeySize KEY_SIZE LOCK LOCK_SPACE MSLT MUTEX_SLOTS Null Subs NULL_SUBSCRIPTS Qdb Rndwn QDBRUNDOWN Std Null Coll STDNULLCOLL Rec Size RECORD_SIZE RES RESERVED_BYTES Region REGION Typ DYNAMIC_SEGMENT
GT.Mをインストールして操作を確認したら、必要に応じてグローバルディレクトリを作成します。カスタマイズされたグローバルディレクトリを作成するには、適切なGDEコマンドと修飾子を使用して、それぞれの必要なグローバルディレクトリを構築します。GDEコマンドはこの章の後半で説明します。
標準テキストエディタでGDEコマンドのテキストファイルを作成し、GDEでこのファイルを処理することもできます。プロダクション環境では、GDEを使ったインタラクティブな使い方よりも優れた設定管理ができます。
グローバルディレクトリで一つの領域(REGION)をADDまたはCHANGE する時、もし -JOURNAL オプションを選択する場合は、次のセクションでグローバルディレクトリが追加され、そして、SHOW を起動して表示します。カラムはジャーナルオプションで選択された値の表示を提供し、または、FISによりデフォルトが 明示的に定義されていない任意のオプションにより提供されます。
*** JOURNALING INFORMATION *** Region Jnl File (def ext: .mjl) Before Buff Alloc Exten AutoSwitch ------------------------------------------------------------------------------------------ DEFAULT $gtmdir/$gtmver/g/gtm.mjl Y 2308 2048 2048 8386560
ジャーナリングの詳細については、この章と 第6章:“GT.M ジャーナリング” の JOURNALの修飾子のセクションを参照してください。