前へ | 次へ | 目次 | 索引 |
論理名が,単一の DEFINE(または ASSIGN)コマンド内の複数の等価文字列に等しいと定義されると,検索リストが作成されます。
ファイル指定にある検索リストを使用すると,検索リストは次のように変換されます。
システムは,一致するものを見つけるまで,等価文字列を指定した順序で論理名を変換します。
コマンドの効果が及ぶのは,見つけた最初のファイルだけです。その時点で検索は終了します。一致するものが見つからない場合には,システムは見つけようとした最後のファイルに関してエラーを報告するだけです。
検索リストはワイルドカードではありませんので注意してください。これは調べるべき場所のリストです。
次の例では,論理名GETTYSBURGが検索リストです。
$ DEFINE GETTYSBURG [JONES.HISTORY],[JONES.WORKFILES] $ SHOW LOGICAL GETTYSBURG "GETTYSBURG" = "[JONES.HISTORY]"(LNM$PROCESS_TABLE) = "[JONES.WORKFILES]" |
次の例では,TYPE コマンドは等価文字列 [JONES.HISTORY] を検索してから,[JONES.WORKFILES] を検索します(GETTYSBURG に指定した論理名の優先定義に指定した順序)。
$ TYPE GETTYSBURG:SPEECH.TXT DISK1:[JONES.HISTORY]SPEECH.TXT;2 Fourscore and seven years ago, our fathers brought forth on this continent a new nation, conceived in liberty, and dedicated to the proposition that all men are created equal. . . . |
TYPE コマンドは,SPEECH.TXT という名前のファイルを見つけると,検索を終了してそのファイルを表示します。
11.7.1 ワイルドカードを使用できるコマンドでの検索リストの使用
ワイルドカードを使用できるコマンドでは検索リストを使用することができます。ワイルドカードを使用すると,システムは検索リストの各等価文字列を使用してファイル指定を形成します。コマンドは,既存のファイルを示す各ファイル指定コマンドで動作します。
次の例で,DIRECTORY コマンドは,バージョン・フィールドにワイルドカード文字を指定しています。このコマンドは,GETTYSBURG で定義された検索リスト内の SPEECH.TXT の全バージョンを探し出します。
$ DIRECTORY GETTYSBURG:SPEECH.TXT;* Directory DISK1:[JONES.HISTORY] SPEECH.TXT;2 SPEECH.TXT;1 Total of 2 files. Directory DISK1:[JONES.WORKFILES] SPEECH.TXT;1 Total of 1 file. Grand total of 2 directories, 3 files. |
(たとえば DIRECTORY コマンドを使用して)検索リストを入力すると,オペレーティング・システムはリストの一部にある要素を使用して,リストの他の部分から省略されているファイル指定の部分を補充します。ファイル指定が完全ではない場合(次の例の SYS$LOGIN で示すように),コマンド行が multiple files and file-not-found 条件を生成します。
$ DIRECTORY SYS$MANAGER:LOGIN.COM,SYS$LOGIN |
次に示すように,ファイル指定の後にセミコロンを入れると multiple files and file-not-found 条件を回避することができます。
$ DIRECTORY SYS$MANAGER:LOGIN.COM;,SYS$LOGIN |
11.7.2 SET DEFAULTコマンドによる検索リストの使用
SET DEFAULT コマンドのパラメータの最初の部分として検索リストを指定すると,システムは検索リスト名を変換せずに SYS$DISKに割り当てます(SYS$DISK は省略時設定のディスクに変換する論理名です)。検索リストを SET DEFAULT コマンドのパラメータの最初の部分として指定すると,検索リスト内の各等価文字列には装置名が含まれている必要があります。
次の例では,装置とディレクトリの両方が指定されています。したがって,両方がファイル指定の構成に使用されます。
$ DEFINE FIFI DISK1:[FRED],DISK2:[GLADYS],DISK3:[MEATBALL.SUB] $ DIRECTORY FIFI:MEMO.LIS |
このコマンドにより次のファイルのリストが表示されます。
DISK1:[FRED]MEMO.LIS DISK2:[GLADYS]MEMO.LIS DISK3:[MEATBALL.SUB]MEMO.LIS |
次の例では,SHOW DEFAULT コマンドは省略時設定のディスクとディレクトリを DISK2:[MEATBALL.SUB] として示します。次に,検索リスト FIFI が定義されます。SET DEFAULT コマンドは,そのパラメータとして検索リストを使用します。SHOW DEFAULT コマンドを2度めに実行すると,省略時のディレクトリが変更されていないことが示されます。ただし,検索リスト FIFI がその等価文字列とともに省略時設定の装置として表示されます。SHOW DEFAULT コマンドは,検索リストがシステムに定義された順序で,検索リストを表示します。
$ SHOW DEFAULT DISK2:[MEATBALL.SUB] $ DEFINE FIFI DISK1:[FRED], DISK2:[GLADYS], DISK3: $ SET DEFAULT FIFI $ SHOW DEFAULT FIFI:[MEATBALL.SUB] = DISK1:[FRED] = DISK2:[GLADYS] = DISK3:[MEATBALL.SUB] |
RUNコマンドの後に検索リストが続く場合,システムは前述のようにファイル指定を形成します。ただし,システムはリスト内のファイルがインストールされたイメージであるかどうかをチェックします。システムは,検索リスト内のインストールされたイメージの中の最初に指定されたファイルを実行します。その後 RUN コマンドが終了します。
ファイル指定のいずれもインストールされたイメージではない場合には,システムはファイル指定を形成するプロセスを繰り返します。今度は,システムはディスク上の各ファイル指定を調べます。そこで最初に見つけたファイルを実行します。指定されたファイルのいずれも既知のファイル・リストまたはディスク上に見つからない場合は,エラー・メッセージが表示されます。
11.7.4 複数の検索リストの検索順序
ファイル指定には,複数の検索リストが含まれることがあります。その場合,ファイル名検索リスト内の各項目が使用されますが,最初の装置名は一定のまま保持されます。ファイル名検索リスト内のすべての項目が最初の装置名と組み合わされると,今度は第2の装置名と組み合わされます。このプロセスは,それぞれの装置が検索されるまで継続します。
検索リスト内の1つの名前が別の検索リストに変換される場合には,反復(ネストした)検索リストを持つこともあります。この場合には,システムはサブリスト内のそれぞれの名前を使用してから,次の上位レベル名へと継続していきます。
次の例では,ファイル名と装置名に検索リストを持つファイル指定を示します。
$ DEFINE FILE CHAP1.RNO, CHAP2.RNO $ DEFINE DISK WORK1:[ROSE], WORK2:[THORN] $ SET DEFAULT DISK $ DIRECTORY FILE Directory WORK1:[ROSE] CHAP1.RNO;2 CHAP2.RNO;1 Total of 2 files. Directory WORK2:[THORN] CHAP1.RNO;1 CHAP2.RNO;1 Total of 2 files. Grand total of 2 directories, 4 files. |
各ファイル名を一覧するディレクトリ・コマンドは,最初に WORK1:[ROSE] おを表示し,次に WORK2:[THORN] を表示しています。
次の例では,反復検索リストを示しています。
$ DEFINE NESTED FRED.DAT, NEW_LIST, RICKY.DAT $ DEFINE NEW_LIST ETHEL.DAT, LUCY.DAT |
検索リストNESTEDの検索順序は次のとおりです。
FRED.DAT
ETHEL.DAT
LUCY.DAT
RICKY.DAT
論理名テーブルには,次の属性があります。
システムの初期化中に,共用可能論理名テーブルがいくつか作成されます。新しいプロセスが作成されると,システムはそのプロセスに対して共用可能でプロセス固有のテーブルを他にいくつか作成します。表 11-1 にこれらのテーブルのすべてを示します。
論理名テーブルのアクセス・モードは,その作成時に指定できます。これが指定されないとモードは,テーブル作成が要求されたアクセス・モードに省略時設定されますが,通常これはスーパバイザ・モードまたはユーザ・モードです。論理名テーブルには,それ自身のアクセス・モードとより低い特権アクセス・モードの論理名が含まれることがあります。論理名テーブルは,同じまたはそれ次の特権アクセス・モードの別のテーブルに対する親テーブルである場合もあります。
論理名テーブルは,その名前で識別されますが,名前自体が論理名です。論理名として各名前テーブル名が論理名テーブル内に含まれている必要があります。
11.8.1 論理名テーブルのディレクトリ
ディレクトリという 2 つの特殊な論理名テーブルが,論理名テーブル名のコンテナとして存在します。
プロセス・ディレクトリには,そのプロセスに対するすべてのプロセス固有テーブルの名前と自身のテーブル名が含まれます。各プロセスには,それ自身のプロセス固有ディレクトリがあります。
システム・ディレクトリには,すべての共用可能テーブルの名前と自身のテーブル名が含まれます。LNM$SYSTEM_DIRECTORY は,システムごとに1つしかありません。
これらのディレクトリには,テーブル名に反復的に変換する名前が含まれます。すべての論理名テーブル名と,テーブルに変換する論理名は,これらのディレクトリに保持されます。
論理名テーブルの親テーブルは,必ずしもディレクトリ・テーブルである必要はありません。つまり,この階層構造は論理名テーブル名の位置から明白です。
11.8.2 ディレクトリ・テーブルの構造の表示
論理名テーブルに対する論理名ディレクトリ・テーブルの関係を表示するには,次の例に示すように,SHOW LOGICAL/STRUCTURE コマンドを入力します。
$ SHOW LOGICAL/STRUCTURE (LNM$PROCESS_DIRECTORY) (LNM$PROCESS_TABLE) (LNM$SYSTEM_DIRECTORY) (LNM$SYSTEM_TABLE) (LMF$LICENSE_TABLE) (LNM$CLUSTER_TABLE) (LNM$SYSCLUSTER_TABLE) (LNM$GROUP_000123) (LNM$JOB_824E98E0) . . . |
この例では,各論理名テーブル・ディレクトリ内に常駐する論理名テーブル名を示します。またこれは,LNM$CLUSTER_TABLE とLNM$SYSCLUSTER_TABLE との関係も示します。
11.9 省略時設定の論理名テーブル
システム・ディレクトリとプロセス・ディレクトリ・テーブルを含む,エグゼクティブによって作成された省略時設定のテーブルを 表 11-1 に示します。
テーブル名 | 完全なテーブル名 | 論理名 | 説明 |
---|---|---|---|
プロセス論理名テーブル | |||
プロセス・ディレクトリ | LNM$PROCESS_DIRECTORY | (他の論理名なし) | プロセス固有論理名テーブル名とテーブル名に反復的に変換する名前の定義を含む。 |
プロセス・テーブル | LNM$PROCESS_TABLE | LNM$PROCESS | SYS$DISK および SYS$INPUT などのプロセス固有論理名を含む。 |
共用論理名テーブル | |||
システム・ディレクトリ | LNM$SYSTEM_DIRECTORY | (他の論理名なし) | 共用可能論理名テーブルとテーブル名に反復的に変換する名前の定義を含む。 |
システム・テーブル | LNM$SYSTEM_TABLE | LNM$SYSTEM | システム内のすべてのプロセスに共用される名前を含む。SYS$LIBRARY および SYS$SYSTEM など。 |
クラスタ単位システム・テーブル | LNM$SYSCLUSTER_TABLE | LNM$SYSCLUSTER | OpenVMS Cluster システムのすべてのプロセスが共用する名前を含む。 |
クラスタ単位親テーブル | LNM$CLUSTER_TABLE | LNM$CLUSTER | LNM$SYSCLUSTER_TABLE を含む,すべてのクラスタ単位の論理名テーブルの親テーブル。 |
グループ・テーブル | LNM$GROUP_ gggggg 1 | LNM$GROUP | UIC グループのすべてのプロセスが共用する名前を含む。 |
ジョブ・テーブル | LNM$JOB_ xxxxxxxx 2 | LNM$JOB | ジョブ・ツリーのすべてのプロセスが共用する名前を含む。SYS$LOGIN および SYS$SCRATCH など。 |
11.9.1 プロセス論理名ディレクトリ
ログイン時にプロセス論理名ディレクトリ・テーブル LNM$PROCESS_DIRECTORY で作成されるプロセス固有論理名を 表 11-2 に示します。
名前 | 説明 |
---|---|
LNM$GROUP | LNM$GROUP_gggggg として定義されるグループ論理名。ここでgggggg はグループ番号を表す。LNM$GROUP_gggggg1 は UIC グループが使用する論理名テーブル。テーブル LNM$GROUP_gggggg は,システム・ディレクトリ・テーブル内でカタログ化される。したがって,LNM$GROUP はグループの論理名テーブルの名前に反復的に変換する論理名である。 |
LNM$JOB | LNM$JOB_xxxxxxxx として定義されるジョブ論理名。ここでxxxxxxxx2 はそれぞれのジョブ・ツリーに固有の数値を表す。LNM$JOB_xxxxxxxx は,ジョブで使用する論理名テーブル。テーブル LNM$JOB_xxxxxxxx は,システム・ディレクトリ・テーブル内でカタログ化される。したがって,LNM$JOB はジョブ論理名テーブルの名前に反復的に変換する論理名である。 |
LNM$PROCESS | プロセス論理名テーブルの名前である LNM$PROCESS_TABLE に反復的に変換するプロセス論理名。 |
LNM$PROCESS_DIRECTORY | プロセス・ディレクトリ論理名テーブルの名前。 |
システム上のすべてのプロセスには,LNM$PROCESS_TABLE という名前のプロセス論理名テーブルがあります。プロセス・テーブルにある名前を使用できるのは,そのプロセスとそれに従属するサブプロセスだけです。ログイン時に,システムはプロセスに対する論理名を作成し,それをそのプロセス・テーブルに配置します。
名前 LNM$PROCESS を通じて間接的に LNM$PROCESS_TABLE を参照することができます。この間接参照により,LNM$PROCESS を複数の等価名として再定義して,次の例で示すようにその中に各自のテーブルを 1 つ以上含めることができるようになります。
$CREATE/NAME_TABLE APPLICATION_NAMES $DEFINE/TAB=LNM$PROCESS_DIRECTORY LNM$PROCESS APPLICATION_NAMES, LNM$PROCESS_TABLE |
省略時設定により,プロセス・テーブルには 表 11-3 に示す論理名が含まれます。これらの論理名 SYS$INPUT,SYS$OUTPUT,SYS$ERROR,SYS$COMMAND は,プロセスパーマネント・ファイル(プロセスの処理中にオープンしたままのファイル)を参照します。プロセスパーマネント・ファイルについての詳細は,第 11.13 節 を参照してください。
名前 | 説明 |
---|---|
SYS$COMMAND | DCLが入力を読み込む初期ファイル(通常は使用するターミナル)。DCL が入力を読み込むファイルは,入力ストリームと呼ぶ。コマンド・インタプリタは SYS$COMMAND を使用して元の入力ストリームを "記憶" しておく。 |
SYS$DISK | ログイン時に設定された,または SET DEFAULT コマンドによって変更された省略時設定の装置。 |
SYS$ERROR | DCL が,警告,エラー,および重大なエラーによって生成されたエラー・メッセージを書き込む省略時設定の装置またはファイル。 |
SYS$INPUT | DCLが入力を読み込む省略時設定のファイル。 |
SYS$NET | DECnet for OpenVMS タスク間通信のターゲット・プロセスを起動するソース・プロセス。ターゲット・プロセスによってオープンされると,SYS$NET はプロセスがその相手とデータを交換できる論理リンクを表す。SYS$NET が定義されるのは,タスク間通信の期間中に限られる。 |
SYS$OUTPUT | DCLが出力を書き込む省略時設定のファイル(通常は使用するターミナル)。DCL が出力を書き込むファイルは,出力ストリームと呼ぶ。 |
TT | ターミナルに対する省略時設定の装置名。 |
前へ | 次へ | 目次 | 索引 |