前へ | 次へ | 目次 | 索引 |
論理名を作成する場合には,システムが等価名をどのように解釈するかを決定する変換属性を指定できます。
2 つの変換属性を等価名に適用するには,DEFINE コマンドに /TRANSLATION_ATTRIBUTES 修飾子を使用します。これは,定位置修飾子で,この修飾子をコマンド行のどこに置くかによって,すべての等価名に変換属性が適用されたり,特定の等価名だけに変換属性が適用されたりします。
次の例では,デバイス名 DJA3: は論理名 DISK で隠されます。
$ DEFINE/TRANSLATION_ATTRIBUTES=CONCEALED DISK DJA3: $ SHOW DEFAULT DISK:[SAM.PUP] $ SHOW LOGICAL DISK "DISK" = "DJA3"(LNM$PROCESS_TABLE) |
論理名DISKは物理装置DJA3を表わします。したがって,SHOW DEFAULTコマンドは,物理デバイスDJA3ではなく,論理名DISKを表示します。SHOW LOGICALコマンドは論理名DISKが実際に指しているものを明らかにします。
CONCEALED 属性を指定すると,システム・メッセージにデバイスの物理名ではなく,論理名が表示されるようになります。普通,CONCEALED 属性は物理デバイスを表す論理名と一緒に使用します。隠されたデバイスを使用すると,どの物理デバイスにディスクやテープが保持されているかを考えずに,プログラムやコマンド・プロシージャを作成したり,他の操作を実行したりできます。また,物理デバイス名より分かりやすい名前を使用できます。
TERMINAL 属性は,論理名の反復変換が行われないようにします。すなわち,等価名が論理名であるかどうかを調べなくなり,最初の変換で「終わり」になります。
11.3.5 アクセス・モード
OpenVMSは次のアクセス・モードを持っています。
DCLコマンドDEFINEまたはASSIGNを使用して,最初の3つのモード(ユーザ,スーパバイザ,エグゼクティブ)で論理名を作成することができます。各論理名の定義に異なるアクセス・モードを指定して,同じ論理名を同じ論理名テーブルの異なる等価文字列に等しいと定義することができます。論理名テーブルにエグゼクティブ・モードで論理名を作成するには,SYSNAMまたはSYSPRV特権を持つ必要があるので注意してください。
ユーザ・モードで作成される論理名は一時的なものです。次のコマンドやイメージの実行のためにだけ論理名を使用したい場合には,ユーザ・モードで論理名を定義します。
次の例では,PAYABLE プログラムの実行後,論理名 ADDRESSES が自動的に削除されます。
$ DEFINE/USER_MODE ADDRESSES DISK1:[SAM.ACCOUNTS]OVERDUE.LIS $ RUN PAYABLE |
モードを指定せずに DEFINE コマンドを使用すると,スーパバイザ・モードで論理名が作成されます。
次の例では,コマンドは論理名 ACCOUNTS をプロセス論理名テーブルの中の 2 つの異なる等価名に,1 つはスーパバイザ・モードで,もう 1 つはエグゼクティブ・モードで定義しています。
$ DEFINE ACCOUNTS DISK1:[ACCOUNTS]CURRENT.DAT $ DEFINE/EXECUTIVE_MODE ACCOUNTS DISK1:[JANE.ACCOUNTS]OBSOLETE.DAT |
すべての特権イメージおよび LOGINOUT のようなユーティリティは,論理名を検索する際に,ユーザ・モードとスーパバイザ・モードの名前とテーブルを参照しません。論理名を,ユーティリティを含む特権イメージで使用する場合には,これはエグゼクティブ・モード・テーブルまたはカーネル・モード・テーブルに,エグゼクティブ・モードまたはカーネル・モードで定義する必要があります。エグゼクティブ・モードで定義される論理名の候補としては他に,プリント・キューやシステム・ディスクなどの,作業グループとシステム資源が使用する公用ディレクトリの名前があります。
カーネル・モードで論理名を作成できるのは,オペレーティング・システムと特権プログラムだけです。
11.3.6 論理ノード名の作成
ネットワーク・ノード名の代わりに,またはノード名とアクセス制御文字列の代わりに論理ノード名を使用することができます。論理ノード名を定義しておくと,これを使用して画面上でユーザ名とパスワードを入力(して表示)する手間を省くことができます。
論理ノード名を定義する場合には,次の規則にしたがってください。
(アクセス制御文字列については,本書の 第 3.1.6 項 ,第 3.1.12 項 ,第 10.5 節 を参照してください)。
ファイルにパスワードを含んだ DEFINE コマンドをファイルに記述しないでください(ログイン・コマンド・プロシージャなど)。他の人がファイルを読み込むと,パスワードが知られてしまいます。 |
次のコマンドは,論理名BOSをノード名BOSTONとアクセス制御文字列に等しいと定義しています。ここでADAMSはユーザ名で,OLMEKIKAはパスワードです。
$ DEFINE BOS "BOSTON""ADAMS OLMEKIKA""::" |
ファイル指定には,論理ノード名(ローカル・ノードでシステムが変換する)と論理装置名(リモート・ノードでシステムが変換する)をともに含むことができます。論理名を使用してノード名だけを表す場合,ファイル指定のノード位置に論理名を使用するときにダブル・コロン(::)を記述する必要があります。
システムは,ローカル・ノードで論理ノード名を変換した後に,ファイル指定の残りの部分を解析してその形式が有効であるかどうか判断します。
次の例では,システムがローカル・ノードで論理ノード名 NYCを変換します。システムは,リモート・ノード(NEWYRK)で論理装置名(DOC:)を変換します。
$ DEFINE NYC NEWYRK:: $ TYPE NYC::DOC:[PERKINS]TERM_PAPER.DAT |
論理ノード名のアクセス制御文字列を上書きするには,コマンド行に論理名とアクセス制御文字列の両方を指定します。
次の例では,アクセス制御文字列 "REVERE HTEBAZILE" が,BOSの等価文字列で与えられたアクセス制御文字列を上書きします。
$ DEFINE BOS "BOSTON""ADAMS OLMEKIKA""::" $ TYPE BOS"REVERE HTEBAZILE"::RIDE.DAT |
システムが論理ノード名を反復して変換すると,最初に変換された論理ノード名のアクセス制御情報が次のアクセス制御情報を上書きします。たとえば,論理名 TEST1 は,TORONTO"TEST NAMWENLUAP"::DBA1: に変換されます。
$ DEFINE TORONTO "TRNTO""TEST EIZNEKCAM""::" $ DEFINE TEST1 "TORONTO""TEST NAMWENLUAP""::DBA1:" $ TYPE TEST1:PROC.DAT |
TORONTOは論理ノード名なので,反復変換 が行われます。つまり,オペレーティング・システムは,定義内の全レベルの論理名が見つかる間で論理名テーブルを検索します。ただし,論理名割り当てコマンド DEFINE TEST1 のアクセス制御文字列は,論理ノード名割り当てコマンド DEFINE TORONTO のアクセス制御文字列を上書きします。したがって,TYPE コマンドにより,次のファイルが表示されます。
TRNTO"TEST NAMWENLUAP"::DBA1:PROC.DAT |
複数の DEFINE コマンドを使用すると,同一のオブジェクトを参照する複数の論理名を作成することができます。たとえば,次のコマンドは論理名 $TERMINAL と CONSOLE をターミナルの物理名に等しいと定義するので,2 つの論理名は同じ装置(LTA69)に変換されます。
$ DEFINE $TERMINAL LTA69 $ DEFINE CONSOLE LTA69 |
論理名を削除するには,DEASSIGNコマンドを使用します。プロセスとジョブ論理名テーブルで論理名を定義すると,プロセスが終了するかまたはユーザの操作で明示的に削除しない限り,論理名は削除されません。ただし,DEFINEコマンドに /USER_MODE 修飾子を指定すると,論理名はプロセス論理名テーブルに定義されて,次のコマンド・イメージを実行した後に自動的に削除されます。
コロンで終わっている論理名を削除するには,2つのコロンを指定します。DEASSIGNコマンドは,ASSIGNコマンドと同様,コロンを1つ削除してから一致する論理名を捜して論理名テーブルを検索します。
11.5 論理名の変換
システムは,DCL コマンド行のファイル指定または装置名を読み込むと,左端のコンポーネントが論理名であるかどうかファイル指定または装置名を調べます。左端のコンポーネントがコロン,スペース,カンマ,行終了文字(Enter など)のいずれかで終わっている場合には,システムはこれを論理名として変換しようとします。左端のコンポーネントが他の文字で終わっている場合には,システムはこれを論理名としては変換しようとしません。
次の例に示すコマンドを入力すると,PUP がファイル指定の左端のコンポーネントなので,システムはPUPが論理名であるかどうかチェックします。左端のコンポーネントが Enter で終わっているため,システムは PUP を変換しようとします。
$ TYPE PUP [Enter] |
次の例に示すコマンドを入力すると,システムは DISK が論理名であるかどうかチェックします。DISK が左端のコンポーネントであり,コロンで終わっているため,システムはこれを変換しようとします。システムは,PUP のチェックを行いません。
$ TYPE DISK:PUP [Enter] |
第 3 の例では,左端のコンポーネントが右角括弧(])で終わっているので,[DRYSDALE]PUP を変換しようとはしません。
$ TYPE [DRYSDALE]PUP [Enter] |
論理名変換は,反復されることがあります。システムは論理名を変換すると,見つけた論理名に対して最初の論理名に含まれていた変換プロセスを繰り返します。
システムは,論理名の変換を実行するレベル数を制限します。レベルの数はシステムの機能によって異なりますが,最低9レベルです。システムによって決まるレベル数を超える数を定義した場合,または循環する定義を作成した場合は,論理名を使用するとエラーが発生します。
次の例では,最初の DEFINE コマンドが論理名 DISK を装置名 DUA1 に等しいと定義します。第 2 の DEFINE コマンドは,論理名 MEMO をファイル指定 DISK:[JEFF.MEMOS]COMPLAINT.TXT に等しいと定義します。
$ DEFINE DISK DUA1: $ DEFINE MEMO DISK:[JEFF.MEMOS]COMPLAINT.TXT |
システムは,論理名 MEMO を変換すると,等価文字列 DISK:[JEFF.MEMOS]COMPLAINT.TXT を捜します。次にシステムは,このファイル指定の左端のコンポーネントがコロン,スペース,カンマ,行末終了文字のいずれで終わっているかチェックをします。DISK の後のコロンが見つかると,システムは,その論理名も変換します。ファイル指定の最終的な変換は,次のようになります。
DUA1:[JEFF.MEMOS]COMPLAINT.TXT |
システムは,論理名を変換する際,ファイル指定の中で欠けているフィールドを,現在の省略時設定の装置,ディレクトリ名,バージョン番号で補完します。論理名を使用してコマンドに入力ファイルを指定すると,コマンドは論理名を使用してファイル指定を出力ファイルにも割り当てます。
等価文字列にファイル名とファイル・タイプが含まれる場合,出力ファイルは同じファイル名とファイル・タイプを与えられます。等価文字列にファイル・タイプが含まれない場合には,省略時設定のファイル・タイプが補充されます。補充されるファイル・タイプは,使用しているコマンドによって異なります。
入力ファイルのリストを指定する際に論理名を使用すると,各論理名の等価文字列は一時的な省略時の設定値を使用します。
次の例では,装置名が論理名 HIG に対して指定されていないので,MAL に対する装置名が一時的省略時設定装置として DBA1 を定義します。
$ SET DEFAULT DBA2:[CASEY] $ DEFINE MAL DBA1:[MALCOLM] $ DEFINE HIG [HIGGINS] $ PRINT ALPHA,MAL:BETA,HIG:GAMMA |
PRINT コマンドは,次のファイルをさがします。
DBA2:[CASEY]ALPHA.LIS
DBA1:[MALCOLM]BETA.LIS
DBA1:[HIGGINS]GAMMA.LIS
同一の論理名が 1 つ以上の論理名テーブルに存在することがあります。システムは,ファイル指定にある論理名を変換する場合,一致するものが見つかるまで論理名テーブルのリストを検索します。システムは,見つけた最初の一致する論理名を使用します。
検索が行われる論理名テーブルのリストは,論理名 LNM$FILE_DEV の定義で指定されます。省略時設定のリストには,プロセス,ジョブ,グループ,システム,クラスタ単位のシステム論理名テーブルから構成されます。検索は,この順序(プロセス,ジョブ,グループ,システム,クラスタ単位のシステム)で行われます。
第 11.11 節 で説明するように,検索順序を変更することもできます。
11.6 論理名の表示
SHOW LOGICAL コマンドを使用して,論理名とその等価文字列を表示します。
場合によっては,論理名の定義に別の論理名が含まれることがあります。SHOW LOGICALコマンドは,反復変換を実行します。次に等価文字列と変換のレベルを表示します。レベル数は,0 が第1レベル,1 が第2レベル,というようにゼロが基準になっています。指定された論理名に対して検索した最初の変換だけを表示するには,SHOW TRANSLATION コマンドを使用します(詳細については,『OpenVMS DCL ディクショナリ』を参照してください)。
SHOW LOGICALコマンドを使用して,プロセスパーマネント・ファイル(第 11.13 節 を参照)に等価文字列を定義する場合,コマンドにより表示されるのは,文字列の装置部分だけです。例を次に示します。
$ SHOW LOGICAL SYS$INPUT "SYS$INPUT" = "_TTB4:"(LNM$PROCESS_TABLE) |
次の例では,論理名 MYDISK が表示されます。2 つの変換がおこなわれ,数値 1 は変換の第 2 レベルを示しています。
$ SHOW LOGICAL MYDISK "MYDISK" = "WORK4"(LNM$PROCESS_TABLE) 1 "WORK4" = "$255$DUA17:"(LNM$SYSTEM_TABLE) |
次の例では,論理名 WORKFILE の等価文字列が表示されます。
$ SHOW LOGICAL WORKFILE "WORKFILE" = "DISK2:[WALSH.REPORTS]WORK_SUMMARY.DAT"(LNM$PROCESS_TABLE) |
システムは,論理名,その変換,および論理名を含む論理名テーブルの名前を表示します。
11.6.1 論理名テーブル検索の指定
省略時設定により,SHOW LOGICAL コマンドは,プロセス,ジョブ,グループ,システム,クラスタ単位のシステム・テーブルを検索して,一致するものすべてを表示します。ただし,/TABLE 修飾子を使用すると特定の論理名テーブルを検索するように指定することができます。また,修飾子 /GROUP,/SYSTEM,/JOB,/PROCESS を使用して,グループ,システム,ジョブ,プロセス論理名テーブルの論理名をそれぞれ表示することもできます。
次の例では,/TABLE 修飾子を使用して SHOW LOGICAL コマンドがプロセス論理名テーブル(LNM$PROCESS)にある論理名を表示します。
$ SHOW LOGICAL/TABLE=LNM$PROCESS (LNM$PROCESS_TABLE) "DECW$DISPLAY" = "_WSA30:" "SYS$COMMAND" = "_FIFI$VTA65:" "SYS$DISK" [super] = "WORK1:" "SYS$DISK" [exec] = "WORK1:" "SYS$ERROR" = "_FIFI$VTA65:" "SYS$INPUT" = "_FIFI$VTA65:" "SYS$OUTPUT" [super] = "_FIFI$VTA65:" "SYS$OUTPUT" [exec] = "_FIFI$VTA65:" "TT" = "_VTA65:" |
論理名の変換属性とアクセスモードを表示するには,次のように SHOW LOGICAL/FULL コマンドを使用します。
$ SHOW LOGICAL/FULL SYS$ERROR "SYS$ERROR" [exec] = "_PADRAIC$TDA824:" [terminal](LNM$PROCESS_TABLE) |
この例では,エグゼクティブ・モードの論理名 SYS$ERROR を表示し,変換属性,ターミナルを示します。
前へ | 次へ | 目次 | 索引 |