[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

13 論理名によるデバイス名とファイル名の定義

論理名とは,ファイル,ディレクトリ,デバイス,またはキューなどのシステム・ オブジェクトを表す文字列の代わりに使用できる名前をいいます。 本章では,次のことについて説明します。

本章で説明するコマンドについての詳細は,『OpenVMS DCL Dictionary』またはオンライン・ ヘルプを参照してください。

13.1 論理名の特徴

論理名は次のような特徴を持っています。

一般に,コマンドはシステム・オブジェクトを受け取ると,その名前が論理名かどうかをチェックします。 論理名の場合には,論理名が実際の値に置き換えられてからコマンドが実行されます。

たとえば,DISK7:[WALSH.COMMAND_PROC]ディレクトリを指す論理名COMSを定義しておけば,DCL コマンド行での入力が次のように簡単になります。

     $ DEFINE COMS DISK7:[WALSH.COMMAND_PROC]:

次のように,論理名はDCLコマンドの中でも使用することができます。

     $ SET DEFAULT COMS
     $ TYPE COMS:PAYROLL.COM

13.2 システムが定義する論理名

システムを起動してログインすると,そのシステムで使用される論理名が作成されます。 これらの論理名を使用すると,物理デバイス名を使用しないでも, 頻繁に使用されるファイルやデバイスを参照することができます。 これらの論理名一覧は第13.9.3 項を参照ください。

ログインするたびに,ユーザ・プロセス用の論理名グループが作成され, それらの論理名がプロセス・テーブルに置かれます。これらの論理名一覧は 第13.9.1項を参照ください。

たとえば,オペレーティング・システムのプログラムの一覧を表示するには, 次のように,プログラムが実際に格納されているディスクやディレクトリの名前ではなく, 論理名SYS$SYSTEMを使用できます。

     $ DIRECTORY SYS$SYSTEM

たとえば,論理名SYS$LOGINは,ログインしたときの省略時のデバイスとディレクトリを表しています。SET DEFAULT コマンドを使用して現在の省略時の値を変更した場合には, 次のコマンドを使用すれば,当初の省略時のディレクトリにあるファイルを表示できます。

     $ TYPE SYS$LOGIN:DAILY_NOTES.DAT

13.3 論理名の作成

論理名は,ASSIGNコマンドまたはDEFINEコマンドで作成します。本章では, 例のなかでDEFINEコマンドを使用することとします。

通常,論理名はログイン・コマンド・プロシージャ(LOGIN.COM)で定義するので, ログインするたびに論理名を使用することができます。論理名は会話形式でも作成できます。 ただし,この場合には,現在のプロセスが終了した時点でそれらの論理名は使用できなくなります。

ユーザが自分のプロセス・テーブルに作成した論理名は,他のユーザのプロセスでは使用することができません。 システム管理者,または特権をもったユーザは, システムにログインするあらゆるユーザが使用できる論理名を共用テーブル上に作成できます。 グループ,またはシステム論理名テーブルは共用テーブルの例です。

共用テーブルの詳細については,第13.9.4 項を参照してください。

13.3.1 DEFINEコマンドの使用方法

DEFINEコマンドで論理名を定義するときの形式は,次のとおりです。

DEFINE論理名 等価名[,...]

同じ形式を使用して,ノード名,ファイル指定,デバイス名,アプリケーション固有情報, 他の論理名も作成できます。

省略時の設定では,DEFINEコマンドは,ユーザ・プロセスの論理名テーブルに論理名を登録します( 第13.8節を参照) 。これらの論理名は,そのプロセスとサブプロセスだけで使用できるものです。 他の論理名テーブルに論理名を追加する場合は,/JOB, /GROUP,/SYSTEM,または/TABLE=テーブル名 のいずれかの修飾子を1 つ付けて別のテーブルを指定します。この修飾子のうち,最初の3つは, それぞれ,省略時設定のジョブ,グループ,システムの論理名テーブルを指定します。/TABLE= テーブル名は,どのような種類のテーブルでも指定でき, また,クラスタ単位のテーブルを指定する際に使用できる唯一の修飾子です。

たとえば,次の例では,論理名WORKFILEを等価文字列DISK2:[WALSH.REPORTS]WORK_SUMMARY.DAT と対応づけるよう定義しています。

     $ DEFINE WORKFILE DISK2:[WALSH.REPORTS]WORK_SUMMARY.DAT

WORKFILEを論理名として定義しておけば,等価文字列の代わりに論理名を使用できます。

たとえば,次のコマンドは,印刷キューBLDGC_LPS20_ANSIに対応する論理名MY_Q を作成します。

     $ DEFINE MY_Q BLDGC_LPS20_ANSI

以後は,次のコマンドによってファイルFABLES.TXTを印刷キューBLDGC_ LPS20_ANSIにプリントできます。

     $ PRINT/QUEUE=MY_Q FABLES.TXT

次の例は/TABLE=テーブル名修飾子の使用例であり,プロセス論理名テーブル以外のテーブルに論理名を作成します。LNM$SYSCLUSTER を指定すると, 論理名は省略時のクラスタ単位テーブルであるLNM$SYSCLUSTER_ TABLEに置かれるので,クラスタ内のすべてのユーザがこの論理名にアクセスできます。

     $ DEFINE/TABLE=LNM$SYSCLUSTER CUSTOMERS DISK1:[CUSTOMER_VISITS]CUSTOMERS.TXT

13.3.2 ファイル入出力用コマンド・プロシージャ内の論理名の作成

コマンド・プロシージャ内で論理名を使用してファイル入出力を行うことができます。OPEN コマンドを使用してファイルをオープンする際には, そのファイルの論理名も作成することができます。これに続くREAD, WRITE,CLOSEコマンドでは,このファイルを参照するために実際のファイルを指定せずに論理名を使用することができます。

次の例では,OPENコマンドは論理名INFILEを作成し,CLOSEコマンドはこの論理名を削除しています。

     $ OPEN INFILE DISK3:[WALSH]DATA.DAT
     $ READ INFILE RECORD
     $ CLOSE INFILE

13.3.3 論理名の作成規則

DEFINEコマンドで論理名を作成するときには,次の規則に従います。

次のコマンドは,DISK1:[SALES_STAFF]PAYROLL.DAT:ファイルを表示します。

     $ DEFINE PAY DISK1:[SALES_STAFF]PAYROLL.DAT
     $ TYPE PAY
     $ DEFINE PAY_FILE DISK1:[SALES_STAFF]PAYROLL
     $ TYPE PAY_FILE:*.DAT
     $ DEFINE PAY_DIR DISK1:[SALES_STAFF]
     $ TYPE PAY_DIR:PAYROLL.DAT
     $ DEFINE PAY_DISK DISK1:
     $ TYPE PAY_DISK:[SALES_STAFF]PAYROLL.DAT

13.3.4 変換属性

論理名を作成する場合には,システムが等価名をどのように解釈するかを決定する変換属性を指定できます。

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属性は,論理名の反復変換が行われないようにします。すなわち, 等価名が論理名であるかどうかを調べなくなり,最初の変換で「終わり」になります。

13.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のようなユーティリティは,論理名を検索する際に, ユーザ・モードとスーパバイザ・モードの名前とテーブルを参照しません。 論理名を,ユーティリティを含む特権イメージで使用する場合には, これはエグゼクティブ・モード・テーブルまたはカーネル・ モード・テーブルに,エグゼクティブ・モードまたはカーネル・モードで定義する必要があります。 エグゼクティブ・モードで定義される論理名の候補としては他に, プリント・キューやシステム・ディスクなどの, 作業グループとシステム資源が使用する公用ディレクトリの名前があります。

カーネル・モード

カーネル・モードで論理名を作成できるのは,オペレーティング・システムと特権プログラムだけです。

13.3.6 論理ノード名の作成

ネットワーク・ノード名の代わりに,またはノード名とアクセス制御文字列の代わりに論理ノード名を使用することができます。 論理ノード名を定義しておくと, これを使用して画面上でユーザ名とパスワードを入力(して表示) する手間を省くことができます。

論理ノード名を定義する場合には,次の規則にしたがってください。


注意
ファイルにパスワードを含んだDEFINE コマンドをファイルに記述しないでください(ログイン・コマンド・ プロシージャなど)。他の人がファイルを読み込むと,パスワードが知られてしまいます。

次のコマンドは,論理名BOSをノード名BOSTONとアクセス制御文字列に等しいと定義しています。 ここでADAMSはユーザ名で,OLMEKIKAはパスワードです。

     $ DEFINE BOS "BOSTON""ADAMS OLMEKIKA""::"

13.3.6.1 ファイル指定に論理ノード名を使用

ファイル指定には,論理ノード名(ローカル・ノードでシステムが変換する) と論理装置名(リモート・ノードでシステムが変換する)をともに含むことができます。 論理名を使用してノード名だけを表す場合,ファイル指定のノード位置に論理名を使用するときにダブル・ コロン(::)を記述する必要があります。

システムは,ローカル・ノードで論理ノード名を変換した後に,ファイル指定の残りの部分を解析してその形式が有効であるかどうか判断します。

次の例では,システムがローカル・ノードで論理ノード名NYCを変換します。 システムは,リモート・ノード(NEWYRK)で論理装置名(DOC:)を変換します。

     $ DEFINE NYC NEWYRK::
     $ TYPE NYC::DOC:[PERKINS]TERM_PAPER.DAT

13.3.6.2 アクセス制御文字列の上書き

論理ノード名のアクセス制御文字列を上書きするには,コマンド行に論理名とアクセス制御文字列の両方を指定します。

次の例では,アクセス制御文字列"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

13.3.7 同一オブジェクトに複数論理名を作成

複数のDEFINEコマンドを使用すると,同一のオブジェクトを参照する複数の論理名を作成することができます。 たとえば,次のコマンドは論理名$TERMINAL とCONSOLEをターミナルの物理名に等しいと定義するので,2 つの論理名は同じ装置(LTA69)に変換されます。

     $ DEFINE $TERMINAL LTA69
     $ DEFINE CONSOLE LTA69

13.4 論理名の削除

論理名を削除するには,DEASSIGNコマンドを使用します。プロセスとジョブ論理名テーブルで論理名を定義すると, プロセスが終了するかまたはユーザの操作で明示的に削除しない限り, 論理名は削除されません。ただし,DEFINE コマンドに/USER_MODE修飾子を指定すると,論理名はプロセス論理名テーブルに定義されて, 次のコマンド・イメージを実行した後に自動的に削除されます。

コロンで終わっている論理名を削除するには,2つのコロンを指定します。DEASSIGN コマンドは,ASSIGNコマンドと同様,コロンを1つ削除してから一致する論理名を捜して論理名テーブルを検索します。

13.5 論理名の変換

システムは,DCLコマンド行のファイル指定または装置名を読み込むと, 左端のコンポーネントが論理名であるかどうかファイル指定または装置名を調べます。 左端のコンポーネントがコロン,スペース,カンマ,行終了文字( リターンなど)のいずれかで終わっている場合には,システムはこれを論理名として変換しようとします。 左端のコンポーネントが他の文字で終わっている場合には, システムはこれを論理名としては変換しようとしません。

次の例に示すコマンドを入力すると, PUPがファイル指定の左端のコンポーネントなので, システムはPUPが論理名であるかどうかチェックします。 左端のコンポーネントがリターンで終わっているため, システムはPUP を変換しようとします。

     $ TYPE PUP <Return>

次の例に示すコマンドを入力すると, システムはDISKが論理名であるかどうかチェックします。 DISK が左端のコンポーネントであり,コロンで終わっているため, システムはこれを変換しようとします。 システムは,PUP のチェックを行いません。

     $ TYPE DISK:PUP <Return>

第3の例では,左端のコンポーネントが右角括弧(]) で終わっているので,[DRYSDALE]PUP を変換しようとはしません。

     $ TYPE [DRYSDALE]PUP <Return>

13.5.1 反復変換

論理名変換は,反復されることがあります。システムは論理名を変換すると, 見つけた論理名に対して最初の論理名に含まれていた変換プロセスを繰り返します。

システムは,論理名の変換を実行するレベル数を制限します。レベルの数はシステムの機能によって異なりますが, 最低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

13.5.2 システムの省略時の設定で補完されるフィールド

システムは,論理名を変換する際,ファイル指定の中で欠けているフィールドを, 現在の省略時設定の装置,ディレクトリ名,バージョン番号で補完します。 論理名を使用してコマンドに入力ファイルを指定すると,コマンドは論理名を使用してファイル指定を出力ファイルにも割り当てます。

等価文字列にファイル名とファイル・タイプが含まれる場合,出力ファイルは同じファイル名とファイル・ タイプを与えられます。等価文字列にファイル・ タイプが含まれない場合には,省略時設定のファイル・タイプが補充されます。 補充されるファイル・タイプは,使用しているコマンドによって異なります。

入力ファイルのリストを指定する際に論理名を使用すると,各論理名の等価文字列は一時的な省略時の設定値を使用します。

次の例では,装置名が論理名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

13.5.3 論理名変換に対する省略時の検索順序

同一の論理名が1つ以上の論理名テーブルに存在することがあります。システムは, ファイル指定にある論理名を変換する場合,一致するものが見つかるまで論理名テーブルのリストを検索します。 システムは,見つけた最初の一致する論理名を使用します。

検索が行われる論理名テーブルのリストは,論理名LNM$FILE_DEVの定義で指定されます。 省略時設定のリストには,プロセス,ジョブ,グループ, システム,クラスタ単位のシステム論理名テーブルから構成されます。検索は, この順序(プロセス,ジョブ,グループ,システム,クラスタ単位のシステム) で行われます。

第13.11節で説明するように, 検索順序を変更することもできます。

13.6 論理名の表示

SHOW LOGICALコマンドを使用して,論理名とその等価文字列を表示します。

場合によっては,論理名の定義に別の論理名が含まれることがあります。 SHOW LOGICALコマンドは,反復変換を実行します。次に等価文字列と変換のレベルを表示します。 レベル数は,0が第1レベル,1が第2レベル,というようにゼロが基準になっています。 指定された論理名に対して検索した最初の変換だけを表示するには,SHOW TRANSLATION コマンドを使用します( 詳細については,『OpenVMS DCL Dictionary』を参照してください)。

SHOW LOGICALコマンドを使用して,プロセスパーマネント・ファイル(第13.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)

システムは,論理名,その変換,および論理名を含む論理名テーブルの名前を表示します。

13.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:"

13.6.2 変換属性とアクセス・モードの表示

論理名の変換属性とアクセスモードを表示するには,次のようにSHOW LOGICAL/FULLコマンドを使用します。

     $ SHOW LOGICAL/FULL SYS$ERROR
       "SYS$ERROR" [exec] = "_PADRAIC$TDA824:" [terminal] (LNM$PROCESS_TABLE)

この例では,エグゼクティブ・モードの論理名SYS$ERRORを表示し,変換属性, ターミナルを示します。

13.7 検索リストの作成と使用

論理名が,単一の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という名前のファイルを見つけると,検索を終了してそのファイルを表示します。

13.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

13.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]

13.7.3 RUNコマンドによる検索リストの使用

RUNコマンドの後に検索リストが続く場合,システムは前述のようにファイル指定を形成します。 ただし,システムはリスト内のファイルがインストールされたイメージであるかどうかをチェックします。 システムは,検索リスト内のインストールされたイメージの中の最初に指定されたファイルを実行します。 その後RUNコマンドが終了します。

ファイル指定のいずれもインストールされたイメージではない場合には, システムはファイル指定を形成するプロセスを繰り返します。今度は,システムはディスク上の各ファイル指定を調べます。 そこで最初に見つけたファイルを実行します。 指定されたファイルのいずれも既知のファイル・ リストまたはディスク上に見つからない場合は,エラー・メッセージが表示されます。

13.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

13.8 論理名テーブルの特徴

論理名テーブルには,次の属性があります。

システムの初期化中に,共用可能論理名テーブルがいくつか作成されます。 新しいプロセスが作成されると,システムはそのプロセスに対して共用可能でプロセス固有のテーブルを他にいくつか作成します。 これらのテーブルはすべて, 表 13-1に示します。

論理名テーブルのアクセス・モードは,その作成時に指定できます。これが指定されないとモードは, テーブル作成が要求されたアクセス・モードに省略時設定されますが, 通常これはスーパバイザ・モードまたはユーザ・ モードです。論理名テーブルには,それ自身のアクセス・モードとより低い特権アクセス・ モードの論理名が含まれることがあります。論理名テーブルは, 同じまたはそれ次の特権アクセス・モードの別のテーブルに対する親テーブルである場合もあります。

論理名テーブルは,その名前で識別されますが,名前自体が論理名です。 論理名として各名前テーブル名が論理名テーブル内に含まれている必要があります。

13.8.1 論理名テーブルのディレクトリ

ディレクトリという2つの特殊な論理名テーブルが,論理名テーブル名のコンテナとして存在します。

これらのディレクトリには,テーブル名に反復的に変換する名前が含まれます。 すべての論理名テーブル名と,テーブルに変換する論理名は,これらのディレクトリに保持されます。

論理名テーブルの親テーブルは,必ずしもディレクトリ・テーブルである必要はありません。 つまり,この階層構造は論理名テーブル名の位置から明白です。

13.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との関係も示します。

13.9 省略時設定の論理名テーブル

システム・ディレクトリとプロセス・ディレクトリ・テーブルを含む, エグゼクティブによって作成された省略時設定のテーブルを表 13-1 に示します。

表 13-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など。

[1]文字列ggggggは,プロセスのUICグループ番号を含む6 桁の8進数を表す。

[2]文字列xxxxxxxxは,ジョブ情報ブロックのアドレスである8 桁の16進数を表す。

13.9.1 プロセス論理名ディレクトリ

ログイン時にプロセス論理名ディレクトリ・テーブルLNM$PROCESS_DIRECTORY で作成されるプロセス固有論理名を表 13-2 に示します。

表 13-2 プロセス論理名ディレクトリの省略時設定の論理名

名前 説明
LNM$GROUP LNM$GROUP_ggggggとして定義されるグループ論理名。 ここでggggggはグループ番号を表す。 LNM$GROUP_ggggggはUICグループが使用する論理名テーブル。テーブルLNM$GROUP_ ggggggは,システム・ディレクトリ・テーブル内でカタログ化される。 したがって,LNM$GROUPはグループの論理名テーブルの名前に反復的に変換する論理名である。
LNM$JOB LNM$JOB_xxxxxxxxとして定義されるジョブ論理名。 ここでxxxxxxxx[2]はそれぞれのジョブ・ツリーに固有の数値を表す。LNM$JOB_ xxxxxxxxは,ジョブで使用する論理名テーブル。 テーブルLNM$JOB_xxxxxxxxは,システム・ディレクトリ・ テーブル内でカタログ化される。したがって,LNM$JOBはジョブ論理名テーブルの名前に反復的に変換する論理名である。
LNM$PROCESS プロセス論理名テーブルの名前であるLNM$PROCESS_TABLE に反復的に変換するプロセス論理名。
LNM$PROCESS_DIRECTORY プロセス・ディレクトリ論理名テーブルの名前。

[1]文字列ggggggは,プロセスのUICグループ番号を含む6 桁の8進数を表す。

[2]文字列xxxxxxxxは,ジョブ情報ブロックのアドレスである8 桁の16進数を表す。

13.9.2 プロセス論理名テーブル

システム上のすべてのプロセスには,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

省略時設定により,プロセス・テーブルには表 13-3 に示す論理名が含まれます。これらの論理名SYS$INPUT, SYS$OUTPUT,SYS$ERROR,SYS$COMMANDは,プロセスパーマネント・ ファイル(プロセスの処理中にオープンしたままのファイル)を参照します。 プロセスパーマネント・ファイルについての詳細は,第13.13節を参照してください。

表 13-3 プロセス論理名テーブルの省略時設定の論理名

名前 説明
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 ターミナルに対する省略時設定の装置名。

13.9.3 システム論理名ディレクトリ

システム・ディレクトリ・テーブルLNM$SYSTEM_DIRECTORYに含まれる省略時設定のシステム論理名を 表 13-4に示します。

表 13-4 システム論理名ディレクトリの省略時設定の論理名

名前 説明
LNM$CLUSTER LNM$CLUSTER_TABLEに反復的に変換するクラスタ単位の親テーブルの論理名。
LNM$DCL_LOGICAL LNM$FILE_DEVとして定義されるDCL 論理名。LNM$DCL_LOGICALは,SHOW LOGICALコマンド,SHOW TRANSLATION コマンド,F$TRNLNMレキシカル関数によって検索され表示される論理名テーブルのリストに反復的に変換する。 省略時設定により,これらのコマンドは, プロセス,ジョブ,グループ,システム,およびクラスタ単位のシステム論理名テーブルをこの順に検索して表示する。
LNM$DIRECTORIES LNM$PROCESS_DIRECTORY およびLNM$SYSTEM_DIRECTORYとして定義されるディレクトリ論理名。
LNM$FILE_DEV ファイル指定を処理する場合にシステムが検索する論理名テーブルのリストとして定義される検索リストの論理名。LNM$PROCESS ,LNM$JOB,LNM$GROUP, LNM$SYSTEMとして定義され,システムは,プロセス,ジョブ,グループ, システム,およびクラスタ単位のシステム論理名テーブルをこの順に検索する。
LNM$JOB LNM$JOB_ xxxxxxxx[1]として定義されるジョブ論理名。
LNM$GROUP グループ・テーブルLNM$GROUP_ gggggg[2]に定義されるグループ論理名。
LNM$PERMANENT_MAILBOX LNM$SYSTEMとして定義されるパーマネント・ メールボックス論理名。パーマネント・ メールボックスに関連付けられた論理名は,論理名LNM$PERMANENT_ MAILBOXが反復して変換する論理名テーブルに入力される。
LNM$SYSCLUSTER LNM$SYSCLUSTER_ TABLEに反復的に変換するクラスタ単位のシステム論理名テーブルの論理名。
LNM$SYSTEM LNM$SYSTEM_TABLE,LNM$SYSCLUSTERに反復して変換するシステム論理名テーブル名。
LNM$TEMPORARY_ MAILBOX LNM$JOBとして定義される一時メールボックス論理名。 一時メールボックスに関連付けられた論理名は,論理名LNM$TEMPORARY_MAILBOX が反復して変換する論理名テーブルに入力される。

[1]文字列ggggggは,プロセスのUICグループ番号を含む6 桁の8進数を表す。

[2]文字列xxxxxxxxは,ジョブ情報ブロックのアドレスである8 桁の16進数を表す。

13.9.4 共用論理名テーブル

ここでは,次の省略時設定の共用論理名テーブルについて説明します。

クラスタ単位のシステム・テーブルLNM$SYSCLUSTER_TABLE

LNM$SYSCLUSTER_TABLEは,クラスタ単位のシステム論理名テーブルの名前です。 このテーブルには,クラスタのすべてのユーザが使用できる論理名が含まれています。

名前LNM$SYSCLUSTERを通じて間接的にLNM$SYSCLUSTER_TABLEを参照することができます。 間接参照により,LNM$SYSCLUSTERを複数の等価名として再定義して, その中に各自のテーブルを含めることができます。

クラスタ単位の親テーブルLNM$CLUSTER_TABLE

LNM$CLUSTER_TABLEは,LNM$SYSCLUSTER_TABLEを含む,すべてのクラスタ単位の論理名テーブルの親テーブルです。 論理名LNM$CLUSTERを使用してこれを参照します。

グループ・テーブルLNM$GROUP_gggggg

それぞれのグループ・テーブルの名前はLNM$GROUP_ggggggです( ggggggはユーザIDコード[UIC]グループ番号を表します)。このテーブルにある名前は, 同じUICグループ番号を持つすべてのユーザが使用できます。 システム上のすべてのグループには,対応するグループ論理名テーブルがあります。

名前LNM$GROUPを通じて間接的にLNM$GROUP_ggggggを参照することができます。 間接参照により,LNM$GROUP_ggggggを複数の等価名として再定義して, その中に各自のテーブルを含めることができます。またこれは, 自分のUICグループ番号を記憶しておく必要を省き,最も新しく定義されたテーブルを必ず使用できるようにします。

ジョブ・テーブルLNM$JOB_xxxxxxxx

それぞれのジョブ・テーブルの名前はLNM$JOB_xxxxxxxxです( xxxxxxxxはジョブ・ツリーに対してシステムが定義したジョブ情報ブロック[JIB] アドレスを表します)。

ジョブ・テーブルには,ジョブ・ツリー,つまりプロセスとそのサブプロセスにあるすべてのプロセスで使用できる論理名が含まれます。 システムには各ジョブ・ ツリーに対して1つのジョブ・テーブルがあります。ジョブ・ テーブルは共用可能なので,ジョブ・ツリー内のすべてのプロセスがアクセスできます。

名前LNM$JOBを通じて間接的に LNM$JOB_xxxxxxxxを参照することができます。 この間接参照により,LNM$JOBを複数の等価名として再定義して, その中に各自のテーブルを含めることができます。さらに, LNM$JOBを使用すると,JIBアドレスを見つける必要がなく,最も新しく定義されたテーブルを必ず使用できるようになります。

システムは,マウントされたディスク,マウントされたテープ,一時メールボックスに対して作成された論理名をジョブ論理名テーブルに配置します。 さらに,システムは次の論理名を作成します。

システム・テーブルLNM$SYSTEM_TABLE

システム・テーブルの名前はLNM$SYSTEM_TABLEです。システム・テーブルには, システム・レベルでシステムのすべてのユーザが使用できる論理名が含まれます。

システム・テーブルは通常,LNM$SYSTEMを通じて間接的に参照することができ, これは検索リストLNM$SYSTEM_TABLE,LNM$SYSCLUSTERとして定義されます。LNM$SYSTEM を使用して,このノードにローカルなシステム名と, クラスタ上のすべてのノードに共通なシステム名を含めることができます。

システムの起動時にシステム・テーブルで自動的に定義される論理名を表 13-5 に示します。

表 13-5 システム論理名テーブルの省略時設定の論理名

名前 説明 省略時アドレス
DBG$INPUT プロセス・ レベルで SYS$INPUTに等しいと定義される, OpenVMS Debugger の省略時入力ストリーム。 適用せず
DBG$OUTPUT プロセス・レベルでSYS$OUTPUT に 等しいと定義される, OpenVMS Debuggerの省略時出力ストリーム。 適用せず
SYS$COMMON SYS$SYSDEVICE: [SYSn.SYSCOMMON.]の共通部分に対する 装置およびディレクトリ名。 ここでnはプロセッサのルート・ディレクトリ 番号。
SYS$ERRORLOG エラー・ログ・データ・ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSERR]
SYS$EXAMPLES システム例の装置およびディレクトリ名。 SYS$SYSROOT:[SYSHLP.EXAMPLES]
SYS$HELP システム・ヘルプ・ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSHLP]
SYS$INSTRUCTION システム命令データ・ ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSCBI]
SYS$LIBRARY システム・ライブラリの装置およびディレクトリ名。 SYS$SYSROOT:[SYSLIB]
SYS$LOADABLE_IMAGES オペレーティング・ システムのエグゼクティブでロード可能な イメージ,デバイス・ドライバ, その他エグゼクティブでロードされた コードの装置およびディレクトリ。 SYS$SYSROOT:[SYS$LDR]
SYS$MAINTENANCE システム保守ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSMAINT]
SYS$MANAGER システム・マネージャ・ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSMGR]
SYS$MESSAGE システム・メッセージ・ ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSMSG]
SYS$NODE DECnet for OpenVMSがシステム上でアクティブであり, ネットワークに接続中の場合, ローカル・システムに対するネットワーク・ ノード名。 適用せず
SYS$PROCDMP イメージ・ダンプが書き込まれるディレクトリ( ユーザが設定)。 省略時の設定なし
SYS$SHARE システム共用イメージのの装置およびディレクトリ名。 SYS$SYSROOT:[SYSLIB]
SYS$SPECIFIC SYS$SYSDEVICEのノード固有部分に対する装置 およびディレクトリ名。 SYS$SYSDEVICE:[SYSn.], ここでnはプロセッサのルート・ ディレクトリ 番号。
SYS$STARTUP システム起動ファイルの装置およびディレクトリ名。 まず SYS$SYSROOT:[SYS$STARTUP], 次に SYS$MANAGERを指す検索リスト。
SYS$SYSDEVICE システム・ディレクトリを含むシステム・ ディスク。 通常はSYS$DISK
SYS$SYSROOT システム・ディレクトリに対する装置およびディレクトリ名。 まず SYS$SYSDEVICE:[SYS n.]( nは プロセッサのルート・ ディレクトリ番号),次に SYS$COMMONを指す検索リスト。
SYS$SYSTEM オペレーティング・ システムのプログラムとプロシージャの装置およびディレクトリ。 SYS$SYSROOT:[SYSEXE]
SYS$TEST 環境設定テスト・ パッケージ(UETP) ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSTEST]
SYS$UPDATE システム更新ファイルの装置およびディレクトリ名。 SYS$SYSROOT:[SYSUPD]

13.9.5 共用論理名テーブルの省略時保護

オペレーティング・システムから提供される共用論理名テーブルは,省略時の保護設定付きで作成されます。 それぞれの共用論理名テーブルに対する省略時保護を 表 13-6に示します。

表 13-6 共用論理名テーブルの省略時保護

テーブルの種類 テーブル名 省略時の保護
ジョブ・テーブル LNM$JOB_xxxxxxxx[1] SYSTEM=RWCD, OWNER=RWCD, GROUP=NO ACCESS, WORLD=NO ACCESS
グループ・テーブル LNM$GROUP_gggggg[2] SYSTEM=RWCD, OWNER=R, GROUP=R, WORLD=NO ACCESS
システム・ テーブル LNM$SYSTEM_TABLE SYSTEM=RWC, OWNER=RWC, GROUP=R, WORLD=R
クラスタ単位システム・テーブル LNM$SYSCLUSTER_TABLE SYSTEM=RWC, OWNER=RWC, GROUP=R, WORLD=R
クラスタ単位親テーブル LNM$CLUSTER_TABLE SYSTEM=RWC, OWNER=RWC, GROUP=R, WORLD=R
ユーザが作成したテーブル ユーザが指定 SYSTEM=RWCD, OWNER=RWCD, GROUP=NO ACCESS, WORLD=NO ACCESS

[1]文字列xxxxxxxxは,ジョブ情報ブロックのアドレスである8 桁の16進数を表す。

[2]文字列ggggggは,プロセスのUICグループ番号を含む6 桁の8進数を表す。

13.9.6 共用論理名管理のための特権とアクセス必要条件

表 13-7には,それぞれの共用論理名テーブルにおける論理名の作成, 削除,読み込み(変換)に必要な特権とアクセス権を示します。 特権,アクセス・タイプ,アクセス制御の詳細については, このマニュアルの第19章を参照してください。

表 13-7 共用論理名の作業に必要な特権またはアクセス・ タイプ

論理名が存在するテーブル テーブル名 作業 必要な特権またはアクセス・ タイプ
ジョブ・テーブル LNM$JOB_xxxxxxxx[1] 論理名の作成または削除 論理名を作成する,または削除するテーブルに対して,WRITE (W) アクセス


論理名の読み込み(変換) 論理名が存在するテーブルに対して,READ (R) アクセス
グループ・テーブル LNM$GROUP_gggggg[2] 論理名の作成または削除 論理名を作成する, または削除するテーブルに対して,WRITE (W)アクセス,または, GRPNAM特権


論理名の読み込み(変換) 論理名が存在するテーブルに対して,READ (R) アクセス
システム・ テーブル LNM$SYSTEM_TABLE 論理名の作成または削除 システムのUICグループ番号(0 からシステム・パラメータMAXSYSGROUPまでの間),または,SYSNAM特権


論理名の読み込み( 変換) 論理名が存在するテーブルに対して,READ (R) アクセス
クラスタ単位システム・ テーブル LNM$SYSCLUSTER_TABLE 論理名の作成または削除 システムのUICグループ番号(0 からシステム・パラメータMAXSYSGROUPまでの間),または,SYSNAM 特権


論理名の読み込み( 変換) 論理名が存在するテーブルに対して,READ (R) アクセス
クラスタ単位親テーブル LNM$CLUSTER_TABLE 論理名の作成または削除 システムのUICグループ番号(0 からシステム・パラメータMAXSYSGROUPまでの間)


論理名の読み込み(変換) 論理名が存在するテーブルに対して,READ (R)アクセス
ユーザ作成 ユーザ指定 論理名の作成または削除 論理名を作成する, または削除するテーブルに対して,WRITE (W)アクセス


論理名の読み込み( 変換) 論理名が存在するテーブルに対して,READ (R) アクセス

[1]文字列xxxxxxxxは,ジョブ情報ブロックのアドレスである8 桁の16進数を表す。

[2]文字列ggggggは,プロセスのUICグループ番号を含む6 桁の8進数を表す。

13.10 論理名テーブルの作成

CREATE/NAME_TABLEコマンドは,論理名テーブルを作成し,それをディレクトリ論理名テーブルの1 つにカタログ化します。論理名テーブルを識別する, または論理名テーブルに反復的に変換する論理名は,常にディレクトリ論理名テーブルの1 つに入力する必要があります。

13.10.1 プロセス固有の論理名テーブルの作成

プロセスに固有の論理名テーブルを作成するには,テーブルをLNM$PROCESS_DIRECTORY ( 省略時設定)に作成します。

ディレクトリ・テーブルの名前には1〜31の文字を含むことができます。 大文字英数字,ドル記号($),アンダスコア(_)だけが有効です。小文字のテーブル名を指定すると, 自動的に大文字に変換されます。

次の例では,TAXという名前のプロセス固有論理名テーブルを作成し,論理名CREDIT の定義をテーブル内に配置し,テーブルの作成をチェックします。SHOW LOGICAL/TABLE コマンドにより,表示する論理名テーブルを指定することができます。

     $ CREATE/NAME_TABLE TAX
     $ DEFINE/TABLE=TAX CREDIT [ACCOUNTS.CURRENT]CREDIT.DAT
     $ SHOW LOGICAL/TABLE=TAX CREDIT

      "CREDIT" = "[ACCOUNTS.CURRENT]CREDIT.DAT"  (TAX)

ファイルのフックアップ中に新しいテーブルをシステムに自動的に検索させるようにするため, 次の例に示すようにLNM$PROCESSを再定義することができます。

     $ DEFINE/TABLE=LNM$PROCESS_DIRECTORY LNM$PROCESS LNM$PROCESS_TABLE, TAX

13.10.2 共用可能論理名テーブルの作成

共用可能論理名テーブルを作成するには,/PARENT_TABLE修飾子を使用し, 共用可能テーブルを指定します。例を次に示します。

     $ CREATE/NAME_TABLE/PARENT_TABLE=LNM$SYSTEM_DIRECTORY NEWTAB

13.10.3 クラスタ単位の論理名テーブルの作成

他の共用可能論理名テーブルを作成する場合と同様の方法で,クラスタ単位の論理名テーブルを作成することができます。 クラスタ単位の論理名テーブルは, 共用論理名テーブルの特殊なタイプで,すべての共用可能論理名テーブルに適用する特権とアクセス必要条件に従います( 第13.10.4項を参照してください) 。

次の例では,クラスタ単位の論理名テーブルを作成する方法を示します。

     $ CREATE/NAME_TABLE/PARENT_TABLE=LNM$CLUSTER_TABLE -
     _$ new_clusterwide_logical_name_table

新しいクラスタ単位の論理名テーブルに常駐するクラスタ単位の論理名を作成するには, 次の例に示すように,DEFINEコマンドで新しいクラスタ単位の論理名を定義して, 新しいテーブルの名前を/TABLE修飾子で指定します。

     $ DEFINE/TABLE=new_clusterwide_logical_name_table logical_name -
     _$ equivalence_string

13.10.4 特権とアクセスの必要条件

特権を持つユーザは,特殊目的のために共用論理名テーブルを作成できます。 例えば,アプリケーションで1つ以上の共用論理名テーブルを作成すると, ファイルの記憶位置などの情報をアプリケーション・ユーザとやり取りすることができます。

     $ CREATE/NAME_TABLE APPX_FILE_LOCATOR /PARENT=LNM$SYSTEM_DIRECTORY -
     _$ /PROTECTION = (S:RWD,O:RWD,G:R,W:R)

共用論理名テーブルを作成するには, 次のものを備えている必要があります。

共用論理名テーブルを削除するには, 次のものを備えている必要があります。

13.10.5 省略時保護の変更

オペレーティング・システムは,システムまたはユーザが作成する共用論理名テーブルに対して, 省略時の保護を提供します。この省略時保護はシステム管理者またはテーブル所有者が変更できるセキュリティ・ プロファイルに格納されます。 詳細については,『OpenVMS Guide to System Security』を参照してください。

自分が作成したテーブルの省略時保護は,次の方法で変更できます。

共用論理名テーブルのACLは,システムのブート間には保存されません。 システムがブートされるごとにこれらの論理名テーブルで ACLを再設定する必要があります。

共用論理名テーブルへのACL保護の適用についての詳細は, 『OpenVMS DCL Dictionary 』のSET SECURITY/ACL コマンドを参照してください。

13.10.6 論理名テーブルへの制限値の設定

制限は,所定の論理名テーブルが消費することのできるシステム資源の量を制限するために使用します。 プロセス,グループ,およびシステム論理名テーブルには, 無限の制限があります。省略時設定により,論理名テーブルを作成すると, これも無限の制限を持つことになります。

制限値を指定して,作成する論理名テーブルのサイズをバイト単位で制限することができます。 論理名が作成される前に,そのデータ構造のサイズがテーブルの残りの制限値に対してチェックされます。 新しいエントリに使用できる制限値が十分でないと, システムはエラー・メッセージを表示します。

いったんテーブルに制限値を設定してしまうと,変更することはできません。 テーブルに余地がなくなった場合は,DEASSIGNコマンドを使用して古い論理名を削除します。 これで新しい論理名のためにスペースを解放できます。

次の例では,論理名テーブルABCが作成され,500バイトの制限値を与えられます。

     $ CREATE/NAME_TABLE/QUOTA=500 ABC

13.10.6.1 ジョブ・テーブルの制限値の設定

ジョブ論理名テーブルは,共用可能テーブルです。ジョブ論理名テーブルの制限値は, テーブルの作成時に設定されます。制限値は,次の基準の1 つまたはそれ以上で決まります。

ジョブ論理名テーブルに対する制限値0は,制限がないことを示します。 あらゆる実用的な目的からも,制限は無限にされます。

13.11 論理名変換の順序の変更

LMN$FILE_DEVは,検索される論理名テーブル,および論理名変換の検索順序を定義します。 一般には,省略時設定の検索順序を変更する必要はありません。 ただし,新しい,プロセス固有の論理名テーブルの名前を追加して,LNM$FILE_DEV で指定されたテーブルより先に検索されるようにしたい場合もあります。 同様に,システム管理者が,1つ以上の共用可能論理名テーブルの名前を追加して,LNM$FILE_DEV で指定されたテーブルより先に検索されるようにしたい場合もあります。

システムが最初に検索する論理名の新しいテーブルでLMN$FILE_DEVのプロセス固有定義を作成するには, 次の手順にしたがいます。

  1. 新しい論理名を含むファイルを作成します。

  2. この新しいファイルを新しい論理名テーブルに変換します。

  3. プロセス論理名ディレクトリ・テーブルを親テーブルとして指定して,LNM$FILE_DEV の固有定義を作成します。

  4. LNM$FILE_DEVの固有定義のテーブル名リストの始めに新しい論理名テーブル名を追加します。

次の例では,新しい論理名テーブル,NEWTABが作成され,最初に検索されるテーブルにNEWTAB をリストしてLMN$FILE_DEVのプロセス固有定義が作成されます。

     $ CREATE/NAME_TABLE NEWTAB
     $ DEFINE/TABLE=LNM$PROCESS_DIRECTORY LNM$FILE_DEV -
     _$ NEWTAB, LNM$PROCESS, LNM$JOB, LNM$GROUP, LNM$SYSTEM

上記の例では,次の理由からシステムはNEWTABテーブルを 最初に検索します。

LNM$FILE_DEVのシステム定義に新しい論理名テーブルを追加する場合には,SYSNAM またはSYSPRV特権を備えている必要があります。

次の例は,NEWTABがプロセス固有テーブルではなく共用可能テーブルとして作成される点を除いては, 以前のものと同様です。

     $ CREATE/NAME_TABLE/PARENT=LNM$SYSTEM_DIRECTORY NEWTAB
     $ DEFINE/TABLE=LNM$SYSTEM_DIRECTORY LNM$FILE_DEV -
     _$ NEWTAB, LNM$PROCESS, LNM$JOB, LNM$GROUP, LNM$SYSTEM

LNM$FILE_DEVによって定義された検索リストから論理名テーブルを削除することもできます。 次の例では,LNM$FILE_DEVのプロセス固有定義が,プロセスおよびシステム論理名テーブルだけを含むように作成されます。 プロセス固有定義にはLNM$JOB およびLNM$GROUPが含まれないので,論理名を変換する必要のある後続のコマンドはそのジョブまたはグループ・ テーブルを検索しません。

     $ DEFINE/TABLE=LNM$PROCESS_DIRECTORY -
     _$ LNM$FILE_DEV LNM$PROCESS,LNM$SYSTEM

13.12 論理名テーブルの削除

論理名テーブルを削除するには,それを含むテーブル(システムまたはプロセス・ ディレクトリ論理名テーブル)とテーブルの名前を指定します。 親論理名テーブルを削除すると,子孫のテーブルにあるすべての論理名( と子孫のテーブル自身)が削除されます。

共用可能論理名テーブルを削除するには,テーブルへのDELETEアクセスまたはSYSPRV 特権を備えている必要があります。

次の例では,コマンドが論理名WORKFILEを削除します。

     $ DEASSIGN WORKFILE

次の例では,コマンドがプロセス・ディレクトリ・テーブルから論理名テーブルTAX を削除します。

     $ DEASSIGN/TABLE=LNM$PROCESS_DIRECTORY TAX

13.13 プロセスパーマネント論理名

DCLは,ログイン時にプロセスパーマネント論理名を作成します。これらの名前の定義は, プロセスの期間中にわたり有効です。これらの論理名を再割り当てすることはできません(DEFINE コマンドに別の等価文字列を指定して) これらを再定義することはできますが,再定義された名前が後に再割り当てされると, プロセスパーマネント名は再設定されます。

次のプロセスパーマネント論理名が使用できます。

13.13.1 会話型とバッチ処理の間の等価名の相違点

システムを会話型で使用する場合には,DCLがSYS$INPUT,SYS$OUTPUT, SYS$ERROR,SYS$COMMANDを使用するターミナルに等しいと定義します。ただし, コマンド・プロシージャを実行してバッチ・ジョブを発行すると, DCLはこれらの論理名に対して新しい等価文字列を作成します。

コマンド・プロシージャを会話型で実行すると,次の状況が生じます。

バッチ・ジョブを発行すると,次の状況が生じます。

コマンド・プロシージャをネストすると(つまり,他のコマンド・プロシージャを実行するコマンド・ プロシージャを記述する場合),SYS$INPUTの等価文字列が現在実行中のコマンド・ プロシージャを指すように変更されます。 ただし,SYS$OUTPUT,SYS$ERROR,SYS$COMMANDの等価文字列は,明示的に変更を加えない限り変化はありません。

さらに,ファイルをオープンするコマンドを入力すると,DCLはそのファイルをプロセスパーマネント・ ファイルとしてオープンします。たとえば,OPEN コマンドでファイルをオープンすると,このファイルはプロセスパーマネント・ ファイルとしてオープンされます。ファイルを明示的にクローズするか, またはログアウトするまで,このファイルはオープンされた状態です。

プロセスパーマネント・ファイルは,メモリの特殊な領域に格納されます。 同時に多数のファイルをオープンした状態にしておくと,この領域を消耗してしまう可能性があるので注意してください。 そのような状況が発生したら, ファイルをいくつかクローズ(するかまたはログアウト)してください。

13.13.2 プロセスパーマネント論理名を使用するファイル入出力の切り換え

プロセスパーマネント論理名を使用して,ファイル入出力を切り換えることができます。 コマンド・プロシージャで,これらの名前を使用してターミナルからのデータを読み込み, データを表示することができます(第15章および第16章を参照してください) 。DCLは,SYS$INPUTおよびSYS$COMMANDに対する新しい定義を無視するので注意してください。

OpenVMSバージョン7.1では,DCL PIPEコマンドが導入されました。PIPE コマンドは,ファイル入出力を切り換える代替方法です。PIPEコマンドについては, 『OpenVMS DCL Dictionary: N-Z』を参照してください。

13.13.2.1 SYS$INPUTの再定義

SYS$INPUTを再定義して,コマンド・プロシージャによって起動されたイメージが端末や他のファイルからの入力を読み込むようにすることができます。DCL は常に省略時設定の入力ストリームから入力を取得するので, DCLはSYS$INPUTの再定義を無視します。

次の例で,コマンドは新しいコマンド・プロシージャ・ファイルの一部です。DEFINE コマンドは,SYS$INPUTをSYS$COMMANDに再定義します。 SYS$COMMANDは,ログイン時の最初の入力ストリームであるターミナルを参照します。 この新しい定義で,コマンド・プロシージャによって起動されたイメージは, コマンド・プロシージャ・ファイルから(省略時設定)ではなくターミナルから入力を取得しますが, これは特定の期間に限られます。

/USER_MODE修飾子は,SYS$INPUTが次のイメージの期間だけ再定義されることをコマンド・ プロシージャに知らせます。この例では,次のイメージはエディタです。 エディタが終了すると,SYS$INPUTはその省略時設定値を再開します。 この場合,省略時設定値は,コマンド・プロシージャ・ファイルです。

     $ DEFINE/USER_MODE SYS$INPUT SYS$COMMAND
     $ EDIT/TPU MYFILE.DAT
        .
        .
        .

13.13.2.2 SYS$OUTPUTの再定義

SYS$OUTPUTを再定義して,省略時設定の装置から別のファイルに出力を切り換えることができます。SYS$OUTPUT を再定義すると,システムは論理名割り当てで指定した名前でファイルをオープンします。SYS$OUTPUT を定義すると, すべての後続の出力は新しいファイルに出力されます。

忘れずにSYS$OUTPUTを割り当て解除してください。解除しないと,出力は指定したファイルに引き続き書き込まれます。 ユーザ・モードでSYS$OUTPUT を再定義して(DEFINE/USER_MODEで),出力をイメージから切り換えることもできます。 この定義は,次のコマンド・イメージが実行されるまでしか有効ではありません。 いったんコマンド・イメージが実行されると( つまり,出力がファイルに取り込まれると),論理名SYS$OUTPUTはその省略時設定値を再開します。

ログイン時に,システムはSYS$OUTPUTという2つの論理名を作成します。1 つの名前はエグゼクティブ・モードで作成され,もう1つの名前はスーパバイザ・ モードで作成されます。SYS$OUTPUTを再定義してスーパバイザ・ モード論理名を優先することができます。スーパバイザ・ノード名を再割り当てすると, システムは,エグゼクティブ・モードの等価文字列を使用してSYS$OUTPUT をスーパバイザ・モードで再定義します。エグゼクティブ・ モード名は,割り当て解除することはできません。

SYS$OUTPUTをファイルに再定義すると,出力が指定したファイルに向けられていても, 論理名にはファイル指定の装置部分しか含まれません。

SYS$OUTPUTを再定義したとき,システムが指定したファイルをオープンできない場合には, エラー・メッセージが表示されます。

SYS$OUTPUTを再定義すると,ほとんどのコマンドは出力を既存のバージョンのファイルに向けます。 ただし,新しいバージョンのファイルを作成してから出力を書き込む特定のコマンドもあります。

次の例では,SYS$OUTPUTがMYFILE.LISとして定義されてから, SHOW DEVICESコマンドが入力されます。SHOW DEVICESによって生成される表示は, ターミナルではなく現在のディレクトリのMYFILE.LIS に向けられます。 他のテキスト・ファイルの場合と同様に, このデータを操作することができます。

     $ DEFINE SYS$OUTPUT MYFILE.LIS
     $ SHOW DEVICES

以下の例では,SYS$OUTPUTがファイル TEMP.DATに再定義されています。 SYS$OUTPUTが再定義されると, DCLからの出力とイメージからの出力はファイルTEMP.DAT に向けられます。 SHOW LOGICALコマンドからの出力とSHOW TIME コマンドからの出力も, TEMP.DATに向けられます。SYS$OUTPUT が再割り当てされると, システムはファイルTEMP.DATをクローズして, SYS$OUTPUT をターミナルに再定義します。TYPEコマンドが入力されると,TEMP.DAT に集められた出力がターミナルに表示されます。

     $ DEFINE SYS$OUTPUT TEMP.DAT
     $ SHOW LOGICAL SYS$OUTPUT
     $ SHOW TIME
     $ DEASSIGN SYS$OUTPUT
     $ TYPE TEMP.DAT
        "SYS$OUTPUT" = "DISK1:" (LNM$PROCESS_TABLE)
       06-MAY-1998 13:26:53

SYS$OUTPUTが再定義されると,等価文字列には装置名 DISK1が含まれますが, ファイル指定全体は含まれません。

13.13.2.3 SYS$ERRORの再定義

SYS$ERRORを再定義して,エラー・メッセージを指定するファイルに向けることができます。 ただし,SYS$ERRORを再定義したためこれがSYS$OUTPUT と異なる場合(またはSYS$ERRORを同時に再定義せずにSYS$OUTPUT を再定義した場合)には,DCLコマンドはSYS$ERRORとSYS$OUTPUT の両方に,情報,警告,エラー,重大エラーメッセージを送ります。 このため,SYS$ERRORの定義によって指示されたファイルで1 回,そしてSYS$OUTPUTによって指示されたファイルで1回と,これらのメッセージを合計2 回受け取ることになります。正常終了のメッセージが送られるのは,SYS$OUTPUT に指示されたファイルだけです。

標準のエラー表示メカニズムを使用するDCLコマンドとイメージは, SYS$ERRORがSYS$OUTPUTと異なっていても,SYS$ERRORとSYS$OUTPUTの両方にエラー・ メッセージを送ります。ただし,SYS$ERRORを再定義してからSYS$ERROR を参照するイメージを実行する場合,イメージがエラー・メッセージを送るのは,SYS$ERROR で指示されたファイルだけです。これは, SYS$ERRORがSTS$OUTPUTと異なっている場合でも該当します。

13.13.2.4 SYS$COMMANDの再定義

SYS$COMMANDを再定義することはできますが,DCLはその定義を無視します。DCL は常に,最初の入力ストリームに対して省略時の定義を使用します。 ただし,SYS$COMMANDを参照するイメージを実行する場合には,イメージは新しい定義を使用することができます。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]